FreeBSD Project Quarterly Status Report - Fourth Quarter 2019
Here is the last quarterly status report for 2019. As you might
remember from last report, we changed our timeline: now we collect
reports the last month of each quarter and we edit and publish the full
document the next month. Thus, we cover here the period October 2019 -
December 2019.
If you thought that the FreeBSD community was less active in the
Christmas' quarter you will be glad to be proven wrong: a quick glance
at the summary will be sufficient to see that much work has been done
in the last months.
Have a nice read!
-- Lorenzo Salvadore
__________________________________________________________________
FreeBSD Team Reports
* FreeBSD Core Team
* FreeBSD Foundation
* FreeBSD Release Engineering Team
* Cluster Administration Team
* Continuous Integration
Projects
* IPSec Extended Sequence Number (ESN) support
* NFS Version 4.2 implementation
* DTS Update
* RockChip Support
* Creating virtual FreeBSD appliances from RE VMDK images
Kernel
* SoC audio framework and RK3399 audio drivers
* FreeBSD on Microsoft HyperV and Azure
* FreeBSD on EC2 ARM64
* ENA FreeBSD Driver Update
Architectures
* PowerPC on Clang
* NXP ARM64 SoC support
Userland Programs
* Linux compatibility layer update
Ports
* Ports Collection
* KDE on FreeBSD
* Java on FreeBSD
* Electron and VSCode
* Bastille
* Universal Packaging Tool (upt)
* Wine on FreeBSD
Third-Party Projects
* sysctlbyname-improved
* pot and the nomad pot driver
* 7 Days Challenge
* NomadBSD
__________________________________________________________________
FreeBSD Team Reports
Entries from the various official and semi-official teams, as found in
the Administration Page.
FreeBSD Core Team
Contact: FreeBSD Core Team <
core@FreeBSD.org>
The FreeBSD Core Team is the governing body of FreeBSD.
* Julie Saravanos, the sister of Bruce D. Evans (bde), mailed core
with the sad news that Bruce passed away on 2019-12-18 at the age
of 68 years. Bruce was a deeply respected member of the community,
served on the Core team, and made over 5,000 commits. Bruce's
impact on our culture was so profound that new terminology was
spawned. This is an excerpt of a message from Poul-Henning Kamp to
Julie.
I don't know precisely when I first communicated with Bruce, it was
in the late 1980'ies via "UseNET", but I can say with certainty that
few people have inspired me more, or improved my programming more,
than Bruce he did over the next half of my life.
All large projects invent its own vocabulary and in FreeBSD two of
the neologisms are "Brucification", and "Brucified".
A "brucification" meant receiving a short, courteous note pointing
out a sometimes subtle deficiency, or an overlooked detail in a
source code change. Not necessarily a serious problem, possibly not
even a problem to anybody at all, but nonetheless something which
was wrong and ought to be fixed. It was not uncommon for the
critique to be considerably longer than the change in question.
If one ignored brucifications one ran the risk of being "brucified",
which meant receiving a long and painstakingly detailed list of
every single one of the errors, mistakes, typos, shortcomings, bad
decisions, questionable choices, style transgressions and general
sloppiness of thinking, often expressed with deadpan humor sharpened
to a near-fatal point.
The most frustrating thing was that Bruce would be perfectly
justified and correct. I can only recall one or two cases where I
were able to respond "Sorry Bruce, but you're wrong there..." - and
I confess that on those rare days I felt like I should cut a notch
in my keyboard.
The last email we received from Bruce is a good example of the depth
of knowledge and insight he provided for the project:
https://docs.freebsd.org/cgi/getmsg.cgi?fetch=1163414+0+archive/2019/svn-src-all/20191027.svn-src-all
* The 12.1 release was dedicated to another FreeBSD developer who
passed away in the fourth quarter of 2019, Kurt Lidl. The FreeBSD
Foundation has a memorial page to Kurt.
https://www.freebsdfoundation.org/blog/in-memory-of-kurt-lidl/
We send our condolences to both the families of Bruce and Kurt.
* Core has documented The Project's policy on support tiers.
https://www.freebsd.org/doc/en_US.ISO8859-1/articles/committers-guide/archs.html
* Core approved a source commit bit for James Clarke. Brooks Davis
(brooks) will mentor James and John Baldwin (jhb) will co-mentor.
* The Project's first Season of Docs ended with a negative result.
The work was not completed and contact could not be established
with the writer. No payment was made and the financing was set
aside for future work.
* Google Summer of Code completed. Information about the seven
accepted projects can be found on the wiki page.
https://wiki.freebsd.org/SummerOfCode2019Projects
* Adam Weinberger (admaw) was added to conduct@. Adam has
demonstrated competence, understanding, and fairness in personal
matters.
* Li-Wen Hsu (lwhsu) contacted Core after receiving a report from
concerned local community members about past updates to The
Project's internationalization policy. Lengthy discussions took
place to determine how to reaffirm that The Project maintains a
neutral position in political disputes. Updates were made to the
document and it was decided that any future changes would require
explicit Core approval.
https://www.freebsd.org/internal/i18n.html
* After nomination by Edward NapieraĆa (trasz), core voted to grant
Daniel Ebdrup (debdrup) and Lorenzo Salvadore (salvadore)
membership in The Project. Both Daniel and Lorenzo have been
working on the quarterly reports for the past few quarters.
* The Core-initiated Git Transition Working Group continued to meet
over the last quarter of 2019. Their report is still forthcoming.
__________________________________________________________________
FreeBSD Foundation
Contact: Deb Goodkin <
deb@FreeBSDFoundation.org>
The FreeBSD Foundation is a 501(c)(3) non-profit organization dedicated
to supporting and promoting the FreeBSD Project and community
worldwide. Funding comes from individual and corporate donations and is
used to fund and manage software development projects, conferences and
developer summits, and provide travel grants to FreeBSD contributors.
The Foundation purchases and supports hardware to improve and maintain
FreeBSD infrastructure and provides resources to improve security,
quality assurance, and release engineering efforts; publishes marketing
material to promote, educate, and advocate for the FreeBSD Project;
facilitates collaboration between commercial vendors and FreeBSD
developers; and finally, represents the FreeBSD Project in executing
contracts, license agreements, and other legal arrangements that
require a recognized legal entity.
Here are some highlights of what we did to help FreeBSD last quarter:
Partnerships and Commercial User Support
We help facilitate collaboration between commercial users and FreeBSD
developers. We also meet with companies to discuss their needs and
bring that information back to the Project. In Q4, Ed Maste and Deb
Goodkin met with a few commercial users in the US. It's not only
beneficial for the above, but it also helps us understand some of the
applications where FreeBSD is used. We were also able to meet with a
good number of commercial users at the Bay Area Vendor/Developer Summit
and Open Source Summit Europe. These venues provide an excellent
opportunity to meet with commercial and individual users and
contributors to FreeBSD.
Fundraising Efforts
In 2019, we focused on supporting a few key areas where the Project
needed the most help. The first area was software development. Whether
it was contracting FreeBSD developers to work on projects like wifi
support, to providing internal staff to quickly implement hardware
workarounds, we've stepped in to help keep FreeBSD innovative, secure,
and reliable. Software development includes supporting the tools and
infrastructure that make the development process go smoothly, and we're
on it with team members heading up the Continuous Integration efforts,
and actively involved in the clusteradmin and security teams.
Our advocacy efforts focused on recruiting new users and contributors
to the Project. We attended and participated in 38 conferences and
events in 21 countries. From giving FreeBSD presentations and workshops
to staffing tables, we were able to have 1:1 conversations with
thousands of attendees.
Our travels also provided opportunities to talk directly with FreeBSD
commercial and individual users, contributors, and future FreeBSD
users/contributors. We've seen an increase in use and interest in
FreeBSD from all of these organizations and individuals. These meetings
give us a chance to learn more about what organizations need and what
they and other individuals are working on. The information helps inform
the work we should fund.
In 2019, your donations helped us continue our efforts of supporting
critical areas of FreeBSD such as:
* Operating System Improvements: Providing staff to immediately
respond to urgent problems and implement new features and
functionality allowing for the innovation and stability you've come
to rely on.
* Improving and increasing test coverage, continuous integration, and
automated testing with a full-time software engineer to ensure you
receive the highest quality, secure, and reliable operating system.
* Security: Providing engineering resources to bolster the capacity
and responsiveness of the Security team providing you with peace of
mind when security issues arise.
* Growing the number of FreeBSD contributors and users from our
global FreeBSD outreach and advocacy efforts, including expanding
into regions such as China, India, Africa, and Singapore.
* Offering FreeBSD workshops and presentations at more conferences,
meetups, and universities around the world.
* Providing opportunities such as developer and vendor summits and
company visits to help facilitate collaboration between commercial
users and FreeBSD developers, as well as helping to get changes
pushed into the FreeBSD source tree, and creating a bigger and
healthier ecosystem.
We've accomplished a lot this year, but we are still only a small
501(c)3 organization focused on supporting FreeBSD and not a trade
organization like many other open source Foundations.
Please consider making a donation at
https://www.FreeBSDfoundation.org/donate/ to help us continue and
increase our support for FreeBSD.
We also have the Partnership Program, to provide more benefits for our
larger commercial donors. Find out more information at
https://www.FreeBSDfoundation.org/FreeBSD-foundation-partnership-program/
and share with your companies!
OS Improvements
The Foundation supports software development projects to improve
FreeBSD through our full time technical staff, contractors, and project
grant recipients. They maintain and improve critical kernel subsystems,
add new features and functionality, and fix bugs.
Between October and December there were 236 commits to the FreeBSD
source repository tagged with FreeBSD Foundation sponsorship. This is
about 10% of all commits during this period. Some of these projects
have their own entries in the quarterly report, and are not repeated
here, while others are briefly described below.
As usual, Foundation staff member Konstantin Belousov committed a large
number of UFS, NFS, tmpfs, VM system, and low-level Intel x86 bug fixes
and improvements. Kostik also committed improvements to the run-time
linker (rtld), and participated in very many code reviews, helping to
get changes from other developers integrated into the tree.
Following on from his work to improve debugging tools in the
Linuxulator environment, Edward NapieraĆa integrated the Linux Test
Project (LTP) with FreeBSD's CI system, and committed a number of small
bug fixes to the Linuxulator itself.
Mark Johnston continued working on infrastructure for the Syzkaller
system call fuzzing tool, and committed fixes for many issues
identified by it. Mark committed improvements to RISC-V infrastructure,
the network stack, performance and locking, and x86 pmap.
Mark also added support for newer Intel WiFi chipsets to the iwm
driver, enabling WiFi support for the Lenovo X1 Carbon 7th generation,
and other contemporary laptops.
Ed Maste committed a number of improvements and cleanups in build
infrastructure, vt console fixes including issues with keyboard maps,
some blacklistd updates, documentation updates, and other small
changes. Ed also committed some work to prepare for the removal of GCC
4.2.1 from the FreeBSD source tree, currently planned for Q1 2020.
Continuous Integration and Quality Assurance
The Foundation provides a full-time staff member who is working on
improving our automated testing, continuous integration, and overall
quality assurance efforts.
During the fourth quarter of 2019, Foundation staff continued to
improve the project's CI infrastructure, worked with contributors to
fix the failing build and test cases. We worked with other teams in the
project for their testing needs and also worked with many external
projects and companies to improve their support of FreeBSD. We added
several new CI jobs and brought the FreeBSD Hardware Testing Lab
online.
We published 2019 in Review: CI and Testing Advancements on the
Foundation's blog.
See the FreeBSD CI section of this report for completed work items and
detailed information.
Supporting FreeBSD Infrastructure
The Foundation provides hardware and support to improve the FreeBSD
infrastructure. Last quarter, we continued supporting FreeBSD hardware
located around the world.
FreeBSD Advocacy and Education
A large part of our efforts are dedicated to advocating for the
Project. This includes promoting work being done by others with
FreeBSD; producing advocacy literature to teach people about FreeBSD
and help make the path to starting using FreeBSD or contributing to the
Project easier; and attending and helping other FreeBSD contributors
volunteer to run FreeBSD events, staff FreeBSD tables, and give FreeBSD
presentations.
The FreeBSD Foundation sponsors many conferences, events, and summits
around the globe. These events can be BSD-related, open source, or
technology events geared towards underrepresented groups. We support
the FreeBSD-focused events to help provide a venue for sharing
knowledge, to work together on projects, and to facilitate
collaboration between developers and commercial users. This all helps
provide a healthy ecosystem. We support the non-FreeBSD events to
promote and raise awareness of FreeBSD, to increase the use of FreeBSD
in different applications, and to recruit more contributors to the
Project.
Check out some of the advocacy and education work we did last quarter:
* Organized the 2019 Bay Area FreeBSD Vendor and Developers Summit in
Santa Clara, CA
* Presented at COSCON '19 in Shanghai, China
* Represented FreeBSD at All Things Open 2019, in Raleigh, North
Carolina
* Industry Partner Sponsor for LISA '19 in Portland, OR
* Silver Sponsor of OpenZFS in San Francisco, CA
* Gave a technical presentation at School of Mines in Golden, CO
* Presenting and representing FreeBSD at Seagl, in Seattle, WA
* Presented at Open Source Summit Europe in Lyon France
* Committed to sponsoring LinuxConfAu 2020, in Gold Coast, Australia
in addition to holding a FreeBSD Mini-Conf
* Accepted to present at the BSD Dev Room at FOSDEM '20, in Brussels,
Belgium
* Accepted to have a stand at FOSDEM '20, in Brussels, Belgium
* Committed to sponsoring FOSSASIA 2020, in Singapore
* Committed to hold FreeBSD Day at SCALE 18x, in Pasadena, CA
We continued producing FreeBSD advocacy material to help people promote
FreeBSD. Learn more about our efforts in 2019 to advocate for FreeBSD:
https://www.freebsdfoundation.org/blog/2019-in-review-advocacy/
Our Faces of FreeBSD series is back. Check out the latest post: Mahdi
Mokhtari.
https://www.freebsdfoundation.org/blog/faces-of-freebsd-2019-mahdi-mokhtari/
Read more about our conference adventures in the conference recaps and
trip reports in our monthly newsletters:
https://www.freebsdfoundation.org/news-and-events/newsletter/
We help educate the world about FreeBSD by publishing the
professionally produced FreeBSD Journal. As we mentioned previously,
the FreeBSD Journal is now a free publication. Find out more and access
the latest issues at
https://www.FreeBSDfoundation.org/journal/.
You can find out more about events we attended and upcoming events at
https://www.FreeBSDfoundation.org/news-and-events/.
We have continued our work with a new website developer to help us
improve our website. Work has begun to make it easier for community
members to find information more easily and to make the site more
efficient.
Legal/FreeBSD IP
The Foundation owns the FreeBSD trademarks, and it is our
responsibility to protect them. We also provide legal support for the
core team to investigate questions that arise.
Go to
http://www.FreeBSDfoundation.org to find out how we support
FreeBSD and how we can help you!
__________________________________________________________________
FreeBSD Release Engineering Team
Links
FreeBSD 12.1-RELEASE schedule
URL:
https://www.freebsd.org/releases/12.1R/schedule.html
FreeBSD 12.1-RELEASE announcement
URL:
https://www.freebsd.org/releases/12.1R/announce.html
FreeBSD development snapshots
URL:
https://download.freebsd.org/ftp/snapshots/ISO-IMAGES/
Contact: FreeBSD Release Engineering Team <
re@FreeBSD.org>
The FreeBSD Release Engineering Team is responsible for setting and
publishing release schedules for official project releases of FreeBSD,
announcing code freezes and maintaining the respective branches, among
other things.
The FreeBSD Release Engineering Team continued work on the
12.1-RELEASE, which started September 6th. This release cycle was the
first "freeze-less" release from the Subversion repository, and the
test bed for eliminating the requirement of a hard code freeze on
development branches.
The 12.1-RELEASE cycle concluded with the final build beginning
November 4th, preceded by three BETA builds and two RC builds. The RC3
build had been included in the original schedule, but had been decided
to not be required.
Additionally throughout the quarter, several development snapshots
builds were released for the head, stable/12, and stable/11 branches.
Much of this work was sponsored by Rubicon Communications, LLC
(netgate.com) and the FreeBSD Foundation.
__________________________________________________________________
Cluster Administration Team
Links
Cluster Administration Team members
URL:
https://www.freebsd.org/administration.html#t-clusteradm
Contact: Cluster Administration Team <
clusteradm@FreeBSD.org>
The FreeBSD Cluster Administration Team consists of the people
responsible for administering the machines that the Project relies on
for its distributed work and communications to be synchronised. In this
quarter, the team has worked on the following:
* Upgrade ref11-{amd64,i386}.freebsd.org to 11.3-STABLE r353313
* Ongoing systems administration work:
* Creating accounts for new committers.
* Backups of critical infrastructure.
* Keeping up with security updates in 3rd party software.
Work in progress:
* Review the service jails and service administrators operation.
* South Africa Mirror (JINX) in progress.
* NVME issues on PowerPC64 Power9 blocking dual socket machine from
being used as pkg builder.
* Drive upgrade test for pkg builders (SSDs) courtesy of the FreeBSD
Foundation.
* Boot issues with Aarch64 reference machines.
* New NYI.net sponsored colocation space in Chicago-land area.
* Setup new host for CI staging environment.
* Plan how to add new semi-official pkg mirrors
__________________________________________________________________
Continuous Integration
Links
FreeBSD Jenkins Instance
URL:
https://ci.FreeBSD.org
FreeBSD Hardware Testing Lab
URL:
https://ci.FreeBSD.org/hwlab
FreeBSD CI artifact archive
URL:
https://artifact.ci.FreeBSD.org
FreeBSD CI weekly report
URL:
https://hackmd.io/@FreeBSD-CI
freebsd-testing Mailing List
URL:
https://lists.FreeBSD.org/mailman/listinfo/freebsd-testing
FreeBSD Jenkins wiki
URL:
https://wiki.freebsd.org/Jenkins
Hosted CI wiki
URL:
https://wiki.freebsd.org/HostedCI
3rd Party Software CI
URL:
https://wiki.freebsd.org/3rdPartySoftwareCI
Tickets related to freebsd-testing@
URL:
https://preview.tinyurl.com/y9maauwg
FreeBSD CI Repository
URL:
https://github.com/freebsd/freebsd-ci
Contact: Jenkins Admin <
jenkins-admin@FreeBSD.org>
Contact: Li-Wen Hsu <
lwhsu@FreeBSD.org>
The FreeBSD CI team maintains continuous integration system and related
tasks for the FreeBSD project. The CI system regularly checks the
committed changes can be successfully built, then performs various
tests and analysis of the results. The results from build jobs are
archived in an artifact server, for the further testing and debugging
needs. The CI team members examine the failing builds and unstable
tests, and work with the experts in that area to fix the code or adjust
test infrastructure. The details are of these efforts are available in
the weekly CI reports.
During the fourth quarter of 2019, we worked with the contributors and
developers in the project for their testing needs and also worked with
many external projects and companies to improve their support of
FreeBSD. The FreeBSD Hardware Testing Lab is online in this quarter.
It's still in work in progress stage and we are merging the different
versions and will integrate more tightly to the main CI server. We are
also working on make this work more easierly to be reproduced.
Work in progress:
* Collecting and sorting CI tasks and ideas at
https://hackmd.io/bWCGgdDFTTK_FG0X7J1Vmg
* Setup the CI stage environment and put the experimental jobs on it
* Implementing automatic tests on bare metal hardware
* Adding drm ports building test against -CURRENT
* Testing and merging pull requests at
https://github.com/freebsd/freebsd-ci/pulls
* Planning for running ztest and network stack tests
* Helping more 3rd software get CI on FreeBSD through a hosted CI
solution
* Adding LTP test jobs.
* Adding non-x86 test jobs.
* Adding external toolchin related jobs.
Please see freebsd-testing@ related tickets for more WIP information.
This project was sponsored by The FreeBSD Foundation.
__________________________________________________________________
Projects
Projects that span multiple categories, from the kernel and userspace
to the Ports Collection or external projects.
IPSec Extended Sequence Number (ESN) support
Contact: Patryk Duda <
pdk@semihalf.com>
Contact: Marcin Wojtas <
mw@semihalf.com>
Extended Sequence Number (ESN) is IPSec extension defined in RFC4303
Section 2.2.1. It makes possible to implement high-speed IPSec
implementations where standard, 32-bit sequence number is not
sufficent. Key feature of the ESN is that only low order 32 bits of
sequence number are transmitted over the wire. High-order 32 bits are
maintained by sender and receiver. Additionally high-order bits are
included in the computation of Integrity Check Value (ICV) field.
Extended Sequence Number support contains following:
* Modification of existing anti-replay algorithm to fulfil ESN
requirements
* Trigger soft lifetime expiration at 80% of UINT32_MAX when ESN is
disabled
* Implement support for including ESN into ICV in cryptosoft engine
in both encrypt and authenticate mode (eg. AES-CBC and SHA256 HMAC)
and combined mode (eg. AES-GCM)
* Implement support for including ESN into ICV in AES-NI engine in
both encrypt and authenticate mode and combined mode
Remaining work:
* Upstream patches of the anti-replay algorithm
* Adjust implementation of crypto part after the reworked Open Crypto
Framework gets stable
This project was sponsored by Stormshield.
__________________________________________________________________
NFS Version 4.2 implementation
Contact: Rick Macklem <
rmacklem@freebsd.org>
RFC-7862 describes a new minor revision to the NFS Version 4 protocol.
This project implements this new minor revision.
The NFS Version 4 Minorversion 2 protocol adds several optional
features to NFS, such as support for SEEK_DATA/SEEK_HOLE, file copying
done on the server that avoids data transfer over the wire and support
for posix_fallocate(), posix_fadvise(). Hopefully these features can
improve performance for certain applications.
This project has basically been completed. The code changes have now
all been committed to head/current and should be released in FreeBSD
13.
Testing by others would be appreciated. To do testing, an up to date
head/current system is required. Client mounts need the
"minorversion=2" mount option to enable this protocol. The NFS server
will have NFSv4.2 enabled by default.
__________________________________________________________________
DTS Update
Contact: Emmanuel Vadot <
manu@FreeBSD.org>
DTS files (Device Tree Sources) were updated to be on par with Linux
5.4 for HEAD and 5.2 for the 12-STABLE branch. The DTS for the RISC-V
architecture are now imported as well.
__________________________________________________________________
RockChip Support
Contact: <
freebsd-arm@FreeBSD.Org>
Contact: Emmanuel Vadot <
manu@FreeBSD.Org>
Contact: Michal Meloun <
mmel@FreeBSD.Org>
RockChip RK3399 now has USB3 support, some configuration such as device
mode are still not supported however host mode should work on any
board.
Support for SPI has been committed which enables ability to interact
with SPI flash if present.
All regulators for the RK808 PMIC (Power Management IC) have been
added.
All clocks are now supported which completes clock and reset
implementation, previously only clocks from devices with drivers were
supported.
The TS-ADC (Temperature Sensor ADC) is now supported, this adds the
ability to read temperature of the CPU and GPU via sysctl
hw.temperature .
Initial PCIe support has been committed and verified working on several
different boards. Known working devices are NVMe devices and PCIe cards
that doesn't utilize PCIe switching or bridge functionality.
Card Detection for SDCard on RK3328 and RK3399 is now supported. There
is still some problems if the board is using a GPIO for CD instead of
the internal detection mechanism.
__________________________________________________________________
Creating virtual FreeBSD appliances from RE VMDK images
Links
freebsd-mkova
URL:
https://github.com/gonzoua/freebsd-mkova
Contact: Oleksandr Tymoshenko <
gonzo@FreeBSD.org>
OVA is a file format for packaging and distributing virtual appliances:
pre-configured virtual machine images. Virtual appliance file contains
full VM information like the number of CPUs, amount of memory, list of
virtual devices, it also includes disk images. Applications like
VirtualBox or VMWare can import OVA files; this process can be easily
automated.
freebsd-mkova is a CLI tool to create OVA files using VMDK images
provided by FreeBSD RE. For now, only a limited set of attributes can
be specified: VM name, number of CPU, amount of memory, and disk size.
The tool also does only cursory sanity checks on the VMDK file format,
assuming it's a monolithic sparse file and that it has to be converted
to the stream-optimized format. The script can be extended to make
hardware configuration more flexible and VMDK parser more robust.
__________________________________________________________________
Kernel
Updates to kernel subsystems/features, driver support, filesystems, and
more.
SoC audio framework and RK3399 audio drivers
Links
rk3399_audio
URL:
https://github.com/gonzoua/freebsd/tree/rk3399_audio
Contact: Oleksandr Tymoshenko <
gonzo@FreeBSD.org>
Most modern SoCs and devboards have audio support in one form or
another, but it's one of the areas that are overlooked by FreeBSD
driver developers. The most common architecture for the audio pipeline
on a single-board computer consists of two DAIs (digital audio
interfaces): CPU and codec, connected by a serial bus.
CPU DAI is a SoC IP block that operates with samples: obtains them from
the driver for playback or provides them to the driver for recording
through FIFOs or DMA requests. Audio samples leave (or arrive at) the
SoC through a serial bus, usually I2S, that is connected to Codec DAI.
Codec DAI is an external (to the SoC) chip that packs one or more
DAC/ADC blocks along with mixers, amplifiers, and probably more
specialized devices like filters and/or sound effects. The analog part
of the codec is connected to microphones/headphones/speakers. On SBCs,
the codec usually communicates with SoC through two interfaces: data
path, over which audio samples travel, and a control interface that is
used to read/write chip registers and configure its behavior. The most
common choices for these are I2S and I2C buses, respectively.
For FDT-enabled devices, an audio pipeline is described as a virtual
DTB node that has links to the CPU and codec device(s), and which
specifies the data format, and clock details that both the CPU and the
codec chips would use. It also may have more than one CPU/codec pair.
Using Firefly-RK3399 as a test device, I was able to implement I2S
driver for RK3399 SoC (PIO mode, playback only), the driver for
Realtek's RT5640 chip (headphones playback only + mixer controls) and a
base outline of SoC audio framework. Some bits of rk_i2s and the
framework were ported from the NetBSD code developed by Jared McNeill.
On my WIP branch, I can play mp3 audio and control playback volume.
The primary missing functionalities at the moment are recording
support, multi-link audio cards, DMA support. The most critical among
these is DMA support. In the current implementation, all buffer
management is placed at the ausoc layer, which is not going to work for
[continued in next message]
--- SoupGate-Win32 v1.05
* Origin: fsxNet Usenet Gateway (21:1/5)