FreeBSD support for Cubieboard
The main aim of this project is to provide support for the following peripherals on Cubieboard1 :-
1) MMC Controller :- Since, the driver is already made, the main work will be testing of the existing driver,making changes if necessary and providing DMA support.
2) SATA Controller :- The driver for SATA is also already made and we will have to first test the driver and make it work with Cubieboard1.
3) Sound Subsystem (AC'97 codec) :- This driver will be written from scratch.
Approach to solving the problem
The major problem in completing the project, will be the half-baked or no documentation provided by Allwinner of its SoC. To counter that, we would have to do a lot of code reading from other open source operating systems mainly NetBSD and Linux-Sunxi which have implemented some of these peripherals.
The major deliverables of this project are :-
1) MMC Driver with DMA support
2) SATA Driver
3) AC'97 interface support
- May 25: Start of coding
- Week (1 - 4) :- Testing of the current MMC driver and adding DMA support.
- June 26-July 3: Mid-term Evaluations
- Week (5 - 7) :- Testing of the currently written SATA driver and making it work on Cubieboard 1 .
- Week (8 - 12) :- Writing of the AC'97 codec driver
- August 17: End of coding (soft)
- August 21 19:00 UTC: End of coding (hard)
The project has been going as per the plan so far, and the tasks assigned before mid term have been completed successfully. We have done the following things so far :-
- Addition of DMA support to the current MMC driver. (Working, Tested and Committed to ~HEAD, this was to be completed before mid term)
- Code for controlling DMA controller. (Tested for Normal DMA on Allwinner A10)
- Wrote the code for controlling AC'97 codec (Testing remaining)
- Code for AHCI module fixed and tested on Allwinner A20 Soc by loos.
The testing of the drivers will be done on actual hardware (Cubieboard 1). Since, majority of the code for different Cubieboard variants will be same we will try to get the driver to work on as many boards as possible.
Here are some of the documentation which can be useful :-