DaVinci PSP 03.20.00.06 Device Driver Features and Performance Guide

DaVinci_Linux_Drivers_Datasheet
Contents
• 1 Document License
• 2 Read This First
♦ 2.1 About This Manual
♦ 2.2 If You Need Assistance
♦ 2.3 Trademarks
• 3 DaVinci Linux Drivers
♦ 3.1 DaVinci Linux PSP details
♦ 3.2 Boot modes supported
♦ 3.3 Device driver list
♦ 3.4 Drivers not supported
• 4 ALSA SoC Audio Driver
♦ 4.1 Introduction
♦ 4.2 Driver Features
♦ 4.3 Features Not Supported
♦ 4.4 Constraints
♦ 4.5 Supported System Calls
♦ 4.6 Supported IOCTLs
♦ 4.7 Performance and Benchmarks
◊ 4.7.1 DA850/OMAP-L138
• 5 Ethernet Driver
♦ 5.1 Introduction
♦ 5.2 Driver Features
♦ 5.3 Features Not Supported
♦ 5.4 Constraints
♦ 5.5 Supported System Calls
♦ 5.6 Performance and Benchmarks
◊ 5.6.1 DA850/OMAP-L138
• 6 Graphical LCD (GLCD) Driver
♦ 6.1 Introduction
♦ 6.2 Driver Features
♦ 6.3 Features Not Supported
♦ 6.4 Constraints
♦ 6.5 Supported System Calls
♦ 6.6 Performance Benchmarks
• 7 NAND Driver
♦ 7.1 Introduction
♦ 7.2 Driver Features
♦ 7.3 Features Not Supported
♦ 7.4 Constraints
♦ 7.5 Supported System Calls
♦ 7.6 Performance Benchmarks
◊ 7.6.1 DA850/OMAP-L138
• 8 SPI Flash Driver
♦ 8.1 Introduction
♦ 8.2 Driver Features
♦ 8.3 Features Not Supported
♦ 8.4 Constraints
♦ 8.5 Supported System Calls
♦ 8.6 Performance Benchmarks
◊ 8.6.1 DA850/OMAP-L138
• 9 MMC/SD Driver
♦ 9.1 Introduction
♦ 9.2 Driver Features
♦ 9.3 Features Not Supported
♦ 9.4 Constraints
♦ 9.5 Supported System Calls
♦ 9.6 Supported IOCTLs
♦ 9.7 Performance and Benchmarks
◊ 9.7.1 DA850/OMAP-L138
Contents
1
DaVinci_Linux_Drivers_Datasheet
◊ 9.7.2 Performance using EXT2 file system
◊ 9.7.3 Performance using VFAT file system
• 10 UART Driver
♦ 10.1 Introduction
♦ 10.2 Driver Features
♦ 10.3 Features Not Supported
♦ 10.4 Constraints
♦ 10.5 Supported System Calls
♦ 10.6 Supported IOCTLs
♦ 10.7 Performance and Benchmarks
◊ 10.7.1 DA850/OMAP-L138
• 11 I2C Driver
♦ 11.1 Introduction
♦ 11.2 Driver Features
♦ 11.3 Features Not Supported
♦ 11.4 Constraints
♦ 11.5 Supported System Calls
♦ 11.6 Supported IOCTLs
♦ 11.7 Performance and Benchmarks
◊ 11.7.1 DA850/OMAP-L138
• 12 EDMA Driver
♦ 12.1 Introduction
♦ 12.2 Driver Features
♦ 12.3 Features Not Supported
♦ 12.4 Constraints
♦ 12.5 Supported System Calls
♦ 12.6 Supported IOCTLs
♦ 12.7 Performance and Benchmarks
• 13 Watchdog(WDT) Driver
♦ 13.1 Introduction
♦ 13.2 Driver Features
♦ 13.3 Features Not Supported
♦ 13.4 Constraints
♦ 13.5 Supported System Calls
♦ 13.6 Supported IOCTLs
♦ 13.7 Performance and Benchmarks
• 14 USB Driver
♦ 14.1 OHCI Controller
◊ 14.1.1 Driver Features
◊ 14.1.2 Features Not Supported
♦ 14.2 MUSB OTG controller
◊ 14.2.1 Description
◊ 14.2.2 Driver Features
◊ 14.2.3 Features Not Supported
♦ 14.3 USB Mass Storage Class Host Driver
◊ 14.3.1 Driver Features
◊ 14.3.2 Features Not Supported
◊ 14.3.3 Constraint
◊ 14.3.4 Supported System Calls
◊ 14.3.5 Supported IOCTLS
◊ 14.3.6 Performance Benchmarks
◊ 14.3.7 DA850/OMAP-L138
⋅ 14.3.7.1 USB MSC (MUSB) Host
mode DMA Ext2 File System
Performance
⋅ 14.3.7.2 USB MSC (MUSB) Host
mode DMA VFAT File System
Performance
⋅ 14.3.7.3 USB MSC (OHCI) Host
mode DMA Ext2 File System
Performance
⋅ 14.3.7.4 USB MSC (OHCI) Host
mode DMA VFAT File System
Performance
♦ 14.4 USB Mass Storage Class Slave Driver
◊ 14.4.1 Description
◊ 14.4.2 Driver Features
◊ 14.4.3 Features Not Supported
◊ 14.4.4 Constraint
◊ 14.4.5 Supported System Calls
Contents
2
DaVinci_Linux_Drivers_Datasheet
◊ 14.4.6 Supported IOCTLS
◊ 14.4.7 Performance Benchmarks
◊ 14.4.8 DA850/OMAP-L138
⋅ 14.4.8.1 USB Slave-DMA
Performance
♦ 14.5 USB CDC/RNDIS Slave Driver
◊ 14.5.1 Description
◊ 14.5.2 Driver Features
◊ 14.5.3 Features Not Supported
◊ 14.5.4 Constraint
◊ 14.5.5 Supported System Calls
◊ 14.5.6 Supported IOCTLS
◊ 14.5.7 Performance Benchmarks
◊ 14.5.8 DA850/OMAP-L138
⋅ 14.5.8.1 USB CDC-DMA
Performance
⋅ 14.5.8.2 USB RNDIS-DMA
Performance
♦ 14.6 USB Human Interface Device (HID) Driver
◊ 14.6.1 Description
◊ 14.6.2 Driver Features
◊ 14.6.3 Features Not Supported
◊ 14.6.4 Constraint
◊ 14.6.5 Supported System Calls
◊ 14.6.6 Supported IOCTLS
◊ 14.6.7 Performance Benchmarks
♦ 14.7 USB Isochronous Driver
◊ 14.7.1 Description
◊ 14.7.2 Driver Features
◊ 14.7.3 Features Not Supported
◊ 14.7.4 Constraint
◊ 14.7.5 Supported System Calls
◊ 14.7.6 Supported IOCTLS
◊ 14.7.7 Performance Benchmarks
♦ 14.8 USB OTG Driver
◊ 14.8.1 Description
◊ 14.8.2 Driver Features
◊ 14.8.3 Features Not Supported
◊ 14.8.4 Constraint
◊ 14.8.5 Supported System Calls
◊ 14.8.6 Supported IOCTLS
◊ 14.8.7 Performance Benchmarks
• 15 SATA
♦ 15.1 Description
♦ 15.2 Driver Features
♦ 15.3 Driver Features Not Supported
♦ 15.4 Constraint
♦ 15.5 Supported System Calls
♦ 15.6 Supported IOCTLS
♦ 15.7 Performance Benchmarks
◊ 15.7.1 SATA - VFAT File System Performance
◊ 15.7.2 SATA - VFAT File System Performance
=
• 16 McBSP
♦ 16.1 Description
♦ 16.2 Driver Features
♦ 16.3 Driver Features Not Supported
♦ 16.4 Constraint
♦ 16.5 Supported System Calls
♦ 16.6 Supported IOCTLS
♦ 16.7 Performance Benchmarks
Document License
This work is licensed under the Creative Commons Attribution-Share Alike 3.0 United States License. To view a copy of this license, visit
http://creativecommons.org/licenses/by-sa/3.0/us/ or send a letter to Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105,
USA.
Document License
3
DaVinci_Linux_Drivers_Datasheet
Read This First
About This Manual
This document provides an overview and performance data for each of the device drivers which are part of the DaVinci Linux PSP package supporting
DA850/OMAP-L138. Note that only a subset of these platforms may have actually been tested and verified in the package you are using. Please refer to the
release notes provided with the package for information on which platforms have actually been verified.
If You Need Assistance
For further information or to report any problems, contact http://community.ti.com/ or http://support.ti.com/
Trademarks
OMAPTM and DaVinciTM are trademarks of Texas Instruments Incorporated. All other trademarks are the property of the respective owner.
DaVinci Linux Drivers
Abstract
This chapter provides brief details on the device drivers supported in the Linux PSP release based on Linux DaVinci git tree at
http://git.kernel.org/?p=linux/kernel/git/khilman/linux-davinci.git
Note: The constraints may vary across product releases. Please refer to the Release Notes accompanying the release for an updated list of constraints.
DaVinci Linux PSP details
1. Supports EVM boards for DA850/OMAP-L138.
2. Built with linux kernel version 2.6.31-rc7.
3. Compiled with code sourcery tool chain version arm-2009-q1-203.
4. Supports U-Boot version 2009.01
5. Supports boot from SPI and NAND flash.
6. Ships with sample root file system, ramdisk, pre-built u-boot, uImage binaries, sample applications and documentation.
Boot modes supported
Green colored box in the table below means that the particular boot mode is supported on the device.
Note: These are supported boot modes in PSP software, the actual hardware may support many more boot modes than shown here. Please refer to hardware
documentation for list of all supported boot modes.
DaVinci Supported Boot Modes
Boot Mode
DM644x DM6467 DM355 DA830/OMAP-L137 DA850/OMAP-L138
SPI EEPROM
SPI Flash
NAND Flash
NOR Flash
I2C EEPROM
Device driver list
OMAP-L138 Peripheral Driver Support
DaVinci Linux Drivers
4
DaVinci_Linux_Drivers_Datasheet
Peripheral
Description
Linux driver type
Audio (McASP)
Audio Record and Playback
ALSA SoC
McBSP
Serial Communication Interface
Kernel API driver
Ethernet
Transmit/receive network data. Supports Auto negotiation with 10/100 Mbps link speed
Netdev
USB MSC Host
USB Mass Storage Class Host Driver
Block
USB HID Host
USB Human Interface Device Host Driver
Input driver
USB MUSB HCD
MUSB Host controller driver
USB HCD
USB OHCI HCD
OHCI Host controller driver
USB HCD
NAND Flash
Flash storage system
MTD Character
and Block
NOR Flash
Flash storage system
MTD Character
and Block
GLCD
Graphical LCD driver
Frame Buffer
CLCD
Character LCD driver
Parallel port based
driver
SPI Flash
Flash storage system
MTD Character
and Block
MMC/SD
Interface to MultiMedia Secure Digital cards
Block
UART
Serial Communication Interface
Character
I2C
Inter-IC Communication
Character
RTC
Real-time clock
Character
Watchdog
Watchdog Timer
Miscellaneous
SPI
Serial Peripheral Interface
Character
SATA
Serial ATA Interface
Block
Drivers not supported
1. SDIO - WLAN
2. VPIF (Video Port Interface)
3. VPBE, VPFE
4. UPP (Universal Parallel Port)
5. Power Management (CPUFreq, CPUIdle)
ALSA SoC Audio Driver
Abstract
This chapter provides details on ALSA SoC audio driver along with CPU load numbers.
Introduction
DaVinci Audio driver complies to the Advanced Linux Sound Architecture (ALSA) System on Chip (SoC) framework (ASoC).
The ASoC framework splits an embedded audio system into three components:
• Codec driver: The codec driver is generic and hardware independent code that configures the audio codec to provide audio capture and
playback. It should contain no code that is specific to the target platform or machine.
• Platform driver: The platform driver can be divided into audio DMA and SoC Digital Audio Interface (DAI) configuration and control. The
platform driver only targets the SoC CPU and must have no board specific code.
• Machine driver: The ASoC machine (or board) driver is the code that glues together the platform and codec drivers. It can contain codec and
platform specific code. It registers the audio subsystem with the kernel as a platform device.
Following architecture diagram shows all the components and the interactions among them:
ALSA SoC Audio Driver
5
DaVinci_Linux_Drivers_Datasheet
Driver Features
1. The driver supports the following features:
2. Supports AIC32, AIC33, AIC3106 audio codec in ALSA SoC framework.
3. Multiple sample rate support (8 KHz, 44.1 KHz and 48 KHz commonly used) for both capture and playback.
4. Supports audio in stereo mode.
5. Supports simultaneous playback and record (full-duplex mode).
6. Start, stop, pause and resume feature.
7. Supports mixer interface for audio codecs.
Features Not Supported
1. Does NOT support OSS based applications using OSS emulation layer.
2. Driver will not work if built as module.
Constraints
• By default, codec is configured in master mode and McASP is used as slave. Testing of the audio sub-system is done in this configuration only.
• Configuration of playback and capture streams in different sampling rates is not supported.
Supported System Calls
Refer ALSA project - the C library reference [1] for API calls.
Introduction
6
DaVinci_Linux_Drivers_Datasheet
Supported IOCTLs
NA
Performance and Benchmarks
The performance numbers were captured using the following:
• Word length in bits = 16
• Number of channels per sample = 2
• Power Management = Disabled
DA850/OMAP-L138
Audio Write Performance
Sampling Rate (in Hz)
CPU Load (in %)
8000
0
44100
2
48000
2
Audio Read Performance
Sampling Rate (in Hz)
CPU Load (in %)
8000
0
44100
2
48000
2
Ethernet Driver
Abstract
This chapter provides details on Ethernet driver along with throughput and CPU load numbers.
Introduction
The Ethernet driver supports the Linux netdev interface.
Ethernet Driver
7
DaVinci_Linux_Drivers_Datasheet
Driver Features
The driver supports the following features:
1. 10/100 Mbps mode of operation.
2. Auto negotiation.
3. Support for multicast and broadcast frames.
4. Promiscuous mode of operation.
5. Full duplex and half duplex mode of operation.
6. Linux NAPI support
Features Not Supported
NA
Constraints
NA
Supported System Calls
Supports the socket() and related system calls in accordance with Linux architecture.
Performance and Benchmarks
Introduction
8
DaVinci_Linux_Drivers_Datasheet
DA850/OMAP-L138
Ethernet 100Mbps Mode Performance
TCP Window Size(in KBytes)
Bandwidth (in Mbits/sec)
Transfer size (in MBytes)
Interval (in Seconds)
16
58.3
417
60
32
65.7
470
60
64
65.8
471
60
128
67.5
483
The performance numbers were captured using the iperf tool. Usage details are mentioned below:
60
• Server side command switch : "-s"
• Client side command : "-c <server ip> -w <window size> -d -t60"
• Iperf tool is run on the DUT1 in server mode and on DUT2 in client mode. Version 1.7.0 is used on both sides.
• Data captured here is for "iperf" in client mode.
• Cross cable is used to measure performance.
• Speed is set to 100Mbps
• Power Management disabled for measurement
Graphical LCD (GLCD) Driver
Abstract
This chapter describes the GLCD driver architecture, driver features and performance numbers (throughput and CPU load).
Introduction
GLCD driver is based on Fbdev framework.
Note: OMAP-L138 EVM does not have Graphical LCD populated. OMAP-L138 SoC, however, supports interfacing to Graphical LCD through LCDC
controller.
Graphical LCD (GLCD) Driver
9
DaVinci_Linux_Drivers_Datasheet
Driver Features
1. Supports QVGA display through Fbdev framework.
2. Supports display of RGB565 images.
3. Supports getting and setting the variable screen information.
4. Supports retrieving the fixed screen information.
Features Not Supported
1. WAITFORVSYNC ioctl not supported.
2. Panning not supported.
3. Brightness and color control ioctls not supported.
Constraints
1. Driver doesn't support double buffering.
Supported System Calls
open(), close(), read(), mmap(), ioctl()
Performance Benchmarks
NAND Driver
Abstract
This chapter describes the NAND flash driver architecture, driver features and performance numbers (throughput and CPU load).
Introduction
The NAND driver is implemented as a block driver, compliant with the standard MTD driver. It supports various NAND Flash chips (see
drivers/mtd/nand/nand_ids.h file.) The NAND driver creates the device nodes for user space access (/dev/mtdblock0, /dev/mtdblock1, /dev/mtd0,/dev/mtd1
and so on.).
Note: OMAP-L138 EVM does not have NAND flash populated. OMAP-L138 SoC, however, supports interfacing to NAND flash through Async EMIF
interface.
This figure illustrates the stack diagram of NAND flash driver in Linux.
NAND Driver
10
DaVinci_Linux_Drivers_Datasheet
Driver Features
The driver supports the following features:
1. JFFS2 file system
2. Supports Read, Write and Erase
3. Bad Block Management
4. Polled mode of transfer
5. Small Block (512 bytes), Big Block (2K & 4K bytes), SLC NAND
Features Not Supported
1. flash_eraseall -j /dev/mtdX fails
Constraints
None
Supported System Calls
Supports the system call support proivided by MTD interface viz. open(), close(), read(), write(), ioctl()
Performance Benchmarks
DA850/OMAP-L138
NAND write performance values
Buffer Size (in KBytes)
Total Bytes Transferred (in MBytes)
Transfer Rate (in MBytes/sec)
CPU Load (in %)
100
100
1.32
100
256
100
1.15
100
512
100
1.15
100
1024
100
1.15
100
5120
100
1.15
100
Introduction
11
DaVinci_Linux_Drivers_Datasheet
NAND read performance values
Buffer Size (in KBytes)
Total Bytes Transferred (in MBytes)
Transfer Rate (in MBytes/sec)
CPU Load (in %)
100
100
3.70
100
256
100
3.70
100
512
100
3.71
100
1024
100
3.71
100
3.70
100
5120
100
The performance numbers are captured using the following:
1. NAND PART Number: Micron MT29F4G08AAC
2. Power Management disabled.
3. File System = JFFS2
4. NAND partition was mounted with async option.
SPI Flash Driver
Abstract
This chapter describes the SPI flash driver architecture, driver features and performance numbers (throughput and CPU load).
Introduction
SPI Flash driver is implemented as block driver and compliant with standard MTD driver. It supports various flash devices. The SPI driver creates device
node for user space access (example, /dev/mtd1).
SPI Flash Driver
12
DaVinci_Linux_Drivers_Datasheet
Driver Features
• DMA and PIO modes are supported.
Features Not Supported
None
Constraints
None
Supported System Calls
Supports the system call support proivided by MTD interface viz. open(), close(), read(), write(), ioctl()
Performance Benchmarks
Introduction
13
DaVinci_Linux_Drivers_Datasheet
DA850/OMAP-L138
SPI write performance values
Buffer Size (in KBytes) Mega Bytes/sec FileSize in MB Duration in usec
100
0.70
7
10521891
256
0.58
7
12698614
512
0.48
7
15335733
1024
0.41
7
18078566
5120
0.35
7
20918374
SPI read performance values
Buffer Size (in KBytes) Mega Bytes/sec FileSize in MB Duration in usec
100
1.25
7
5871600
256
1.13
7
6497305
512
1.16
7
6301649
1024
1.13
7
6491817
5120
1.09
7
6726925
MMC/SD Driver
Abstract
This chapter provides details on MMC/SD driver along with throughput and CPU load numbers.
Introduction
The MMC controller provides an interface to external MMC cards that follow the MMC specification v4.0. The MMC driver is implemented as a block
driver. Block device nodes(such as /dev/mmcblockp1, /dev/mmcblockp2) are created for user space access.
MMC/SD Driver
14
DaVinci_Linux_Drivers_Datasheet
Driver Features
The driver supports the following features:
1. MMC/SD native protocol command/response set
2. Single/multiple block data transfers
3. Linux file system and generic MMC layer abstract details of block devices (MMC)
4. High-speed (SDv1.1) and High Capacity (SDv2.0) cards
5. Support for 1/4 bit modes
6. Support for card detect and Write protect features
7. DMA and polled mode for data transfer operations
Features Not Supported
1. Support for 8-bit mode of operation.
2. SDIO - WLAN support
3. SPI mode of operation
Constraints
1. MMC/SD cards should not be removed when the mount operation is in progress. If done so, data integrity cannot be guaranteed.
Supported System Calls
open(),close(),read(),write()
Introduction
15
DaVinci_Linux_Drivers_Datasheet
Supported IOCTLs
None
Performance and Benchmarks
Important
The performance numbers can be severely affected if the media is mounted in sync mode. Hot plug scripts in the filesystem mount removable media in sync
mode to ensure data integrity. For performance sensitive applications, umount the auto-mounted filesystem and re-mount in async mode.
DA850/OMAP-L138
Performance using EXT2 file system
Read performance values
Buffer Size (in KBytes)
Total Bytes Transferred (in MBytes)
Transfer Rate (in MBytes/sec)
CPU Load (in %)
100
100
9.36
27.41
256
100
9.40
28.05
512
100
9.38
28.98
1024
100
9.38
27.46
5120
100
9.38
27.64
Write performance values
Buffer Size (in KBytes)
Total Bytes Transferred (in MBytes)
Transfer Rate (in MBytes/sec)
CPU Load (in %)
100
100
4.95
28.38
256
100
4.77
26.63
512
100
4.38
24.87
1024
100
4.94
28.71
4.37
25.17
5120
100
The performance numbers were captured using the following:
• SD Card (Elite Pro, High Speed, 2GB)
• Power Management: Disabled
• File System: ext2
• Partition was mounted with async option
Performance using VFAT file system
Read performance values
Buffer Size (in KBytes)
Total Bytes Transferred (in MBytes)
Transfer Rate (in MBytes/sec)
CPU Load (in %)
100
100
7.33
24.25
256
100
7.05
22.78
512
100
7.44
23.85
1024
100
7.50
24.70
5120
100
Buffer Size (in KBytes)
7.47
Write performance values
Total Bytes Transferred (in MBytes)
Transfer Rate (in MBytes/sec)
24.88
CPU Load (in %)
100
100
2.07
22.26
256
100
2.08
18.43
512
100
2.08
18.18
1024
100
2.11
17.38
Supported IOCTLs
16
DaVinci_Linux_Drivers_Datasheet
5120
100
The performance numbers were captured using the following:
2.10
17.92
• SD Card (Transcend, 512MB)
• Power Management: Disabled
• File System: VFAT
• Partition was mounted with async option
UART Driver
Abstract
This chapter provides details on UART driver along with throughput and CPU load numbers.
Introduction
The UART driver is implemented as a serial driver, and can be accessed from user space as /dev/ttyS2.
Driver Features
The driver supports the following features:
1. UART2 is physically available on Board
Features Not Supported
• None
Constraints
None
Supported System Calls
open(),close(),read(),write(),ioctl()
UART Driver
17
DaVinci_Linux_Drivers_Datasheet
Supported IOCTLs
Constant
Description
TIOCGSERIAL Gets device parameters from the UART (example, port type, port num, baud rate, base divisor, and so on.
TIOCSSERIAL Sets UART device parameters (example, port type, port num, baud rate, base divisor, and so on)
Performance and Benchmarks
DA850/OMAP-L138
Write performance values
Transmit Size in Bytes bits/sec Buffer Size in Bytes
Duration in sec
102400
NA
1024
NA
204800
NA
1024
NA
307200
NA
1024
NA
409600
NA
1024
NA
I2C Driver
Abstract
This chapter provides details on I2C driver along with throughput and CPU load numbers.
Introduction
The I2C peripheral is compliant with the Philips Semiconductor I2C-bus specification version 2.1. The I2C driver is implemented as a serial driver. The I2C
driver can be accessed from the user space as /dev/i2c/0.
I2C Driver
18
DaVinci_Linux_Drivers_Datasheet
Driver Features
The driver supports the following features:
1. 7-bit addressing mode
2. Fast mode
3. Interrupt mode
Features Not Supported
1. 7-bit and 10-bit addressing combined format is not supported
2. DMA mode is not supported
Constraints
• None
Supported System Calls
open(),close(),read(),write(),ioctl()
Introduction
19
DaVinci_Linux_Drivers_Datasheet
Supported IOCTLs
Constant
Description
I2C_SLAVE_FORCE Changes slave address. Slave address is 7 or 10 bits. This changes the address, even if it is already considered.
I2C_TENBIT
7- or 10-bit address. (Value = 0 for 7 bits; value != 0 for 10 bits.)
I2C_FUNCS
Gets the adapter functionality
I2C_RDWR
Combined R/W transfer (one stop only)
Performance and Benchmarks
DA850/OMAP-L138
Read performance values
Buffer Size in Bytes
Data rate - Kbits/s
Total Buffer Size in Bytes
Duration in uSec
16
NA
1024
NA
32
NA
1024
NA
64
NA
1024
NA
128
NA
1024
NA
1024
NA
1024
NA
Write performance values
Buffer Size in Bytes
Data rate - Kbits/s
Total Buffer Size in Bytes
Duration in uSec
16
NA
1024
NA
32
NA
1024
NA
64
NA
1024
NA
128
NA
1024
NA
1024
NA
1024
NA
EDMA Driver
Abstract
This chapter provides details on EDMA driver along with throughput and CPU load numbers.
Introduction
The EDMA controller handles all data transfers between the level-two (L2) cache/memory controller and the device peripherals. On DA850/OMAPL138
EDMA has 2 CC instances where as the other SoCs have one instance. Each EDMA instance supports up to 32-dma channels and 8 QDMA channels. The
EDMA consists of a scalable Parameter RAM (PaRAM) that supports flexible ping-pong, circular buffering, channel-chaining, auto-reloading, and memory
protection. The EDMA allows movement of data to/from any addressable memory spaces, including internal memory (L2 SRAM), peripherals, and external
memory.
The EDMA driver exposes only the kernel level API's. This driver is used as a utility by other drivers for data transfer.
Driver Features
The driver supports the following features:
1. Request and Free DMA channel
2. Programs DMA channel
3. Start and Synchronize with DMA transfers
4. Provides DMA transaction completion callback to applications
5. Multiple instances of EDMA driver on a single processor
EDMA Driver
20
DaVinci_Linux_Drivers_Datasheet
Features Not Supported
1. QDMA is not supported.
Constraints
None
Supported System Calls
None
Supported IOCTLs
None
Performance and Benchmarks
NA
Watchdog(WDT) Driver
Abstract
This chapter provides details on WDT driver along with throughput and CPU load numbers.
Introduction
DaVinci SoCs have a 64-bit watchdog timer which can be used to reset the hardware in case of a software fault. Once the /dev/watchdog is opened, it will
reboot the system unless a user space daemon resets the timer at regular intervals within a certain timeout period. The WDT driver is registered as a misc
device. Default timeout of this driver is 60 seconds.
Watchdog(WDT) Driver
21
DaVinci_Linux_Drivers_Datasheet
Driver Features
The driver supports the following features:
1. Supports IOCTLs to set/get the timeout value, ping the watchdog & query the watchdog structure info.
2. Driver can be built as a loadable module and inserted dynamically.
Features Not Supported
• None
Constraints
1. Once /dev/watchdog is opened, closing it doesn't disable the watchdog
Supported System Calls
open(), close(), write(), read()
Supported IOCTLs
Constant
Description
WDIOC_GETSUPPORT This ioctl returns "struct watchdog_info", which tells what the device can do
WDIO_KEEPALIVE
This ioctl can be used to notify the watchdog timer that the user space application is alive
WDIO_SETTIMEOUT
Watchdog timeout or margin can be dynamically changed using this ioctl
WDIO_GETTIMEOUT
This ioctl returns the present watchdog timeout period in seconds
Performance and Benchmarks
None
USB Driver
Abstract
This chapter provides details on OHCI and MUSB drivers along with throughput and CPU load numbers.
This chapter describes the USB (EHCI and MUSB) driver architecture, features supported/not supported, constraints and performance numbers.
OHCI Controller
Driver Features
The driver supports the following features
1. Human Interface Class (HID)
2. Mass Storage Class (MSC)
3. Hub Class
4. USB Video Class (UVC)
5. USB Audio Class (UAC)
Features Not Supported
All other classes not mentioned in the "Supported Features" section.
USB Driver
22
DaVinci_Linux_Drivers_Datasheet
MUSB OTG controller
Description
The MUSB driver is implemented on top of Mentor OTG IP version 1.8 which supports all the speeds (High, Full and Low (host mode only)). On
DA850/OMAP-L138, MUSB uses CPPI 4.1 DMA for all the transfers on other devices CPPI 3.0 DMA is used.
Driver Features
The driver supports the following features
Host Mode
1. Human Interface Class (HID)
2. Mass Storage Class (MSC)
3. Hub Class
4. USB Video Class (UVC)
5. USB Audio Class (UAC)
Gadget mode
1. Mass Storage Class (MSC)
2. USB Networking - RNDIS/CDC
Features Not Supported
OTG
USB Mass Storage Class Host Driver
Driver Features
The driver supports the following feature
1. DMA mode
2. PIO mode
Features Not Supported
None
Constraint
None
Supported System Calls
open(), close(), read(), write(), ioctl()
Supported IOCTLS
None
MUSB OTG controller
23
DaVinci_Linux_Drivers_Datasheet
Performance Benchmarks
Important
For Mass-storage applications, the performance numbers can be severely affected if the media is mounted in sync mode. Hot plug scripts in the filesystem
mount removable media in sync mode to ensure data integrity. For performance sensitive applications, umount the auto-mounted filesystem and re-mount in
async mode.
DA850/OMAP-L138
USB MSC (MUSB) Host mode DMA Ext2 File System Performance
USB-MSC MUSB Host-DMA-Write Performance values
Buffer Size (in KBytes)
Total Bytes Transferred (in MBytes)
Transfer Rate (in MBytes/sec)
CPU Load (in %)
100
100
12.3
62
500
100
13.6
66
1024
100
13.9
60
5120
100
14.3
82
USB-MSC MUSB Host-DMA-Read Performance values
Buffer Size (in KBytes)
Total Bytes Transferred (in MBytes)
Transfer Rate (in MBytes/sec)
CPU Load (in %)
100
100
17.8
72
256
100
17.6
69
512
100
17.5
67
17.3
73
1024
100
The performance numbers are captured using the following.
1. Hard disk: Mobile Disk
2. File format: ext2
3. Power Management: Disabled
USB MSC (MUSB) Host mode DMA VFAT File System Performance
USB-MSC MUSB Host-DMA-Write Performance values
Buffer Size (in KBytes)
Total Bytes Transferred (in MBytes)
Transfer Rate (in MBytes/sec)
CPU Load (in %)
100
100
13
100
500
100
13
100
1024
100
13
100
5120
100
13
100
USB-MSC MUSB Host-DMA-Read Performance values
Buffer Size (in KBytes)
Total Bytes Transferred (in MBytes)
Transfer Rate (in MBytes/sec)
CPU Load (in %)
100
100
17.5
76
500
100
17
75
1024
100
17.5
75
16.5
67
5120
100
The performance numbers are captured using the following.
1. Hard disk: Mobile Disk
2. File format: vfat
3. Power Management: Disabled
Performance Benchmarks
24
DaVinci_Linux_Drivers_Datasheet
USB MSC (OHCI) Host mode DMA Ext2 File System Performance
USB-MSC OHCI Host-DMA-Write Performance values
Buffer Size (in KBytes)
Total Bytes Transferred (in MBytes)
Transfer Rate (in MBytes/sec)
CPU Load (in %)
100
50
0.99
3.5
500
50
0.99
3.5
1024
50
0.99
4.5
5120
50
Buffer Size (in KBytes)
0.99
USB-MSC OHCI Host-DMA-Write Performance values
Total Bytes Transferred (in MBytes)
Transfer Rate (in MBytes/sec)
4.5
CPU Load (in %)
100
50
0.90
4.75
512
50
0.90
4.6
1024
50
0.90
4.2
0.90
4
5120
50
The performance numbers are captured using the following.
1. Hard disk: Mobile Disk
2. File format: ext2
3. Power Management: Disabled
USB MSC (OHCI) Host mode DMA VFAT File System Performance
USB-MSC OHCI Host-DMA-Write Performance values
Buffer Size (in KBytes)
Total Bytes Transferred (in MBytes)
Transfer Rate (in MBytes/sec)
CPU Load (in %)
100
50
0.87
8.6
500
50
0.88
5.1
1024
50
0.89
6.7
5120
50
0.89
5.7
USB-MSC OHCI Host-DMA-Read Performance values
Buffer Size (in KBytes)
Total Bytes Transferred (in MBytes)
Transfer Rate (in MBytes/sec)
CPU Load (in %)
100
50
0.99
5
500
50
0.99
3.3
1024
50
0.99
5
0.99
5
5120
50
The performance numbers are captured using the following.
1. Hard disk: Mobile Disk
2. File format: vfat
3. Power Management: Disabled
USB Mass Storage Class Slave Driver
Description
This figure illustrates the stack diagram of the system with USB File Storage Gadget driver
USB MSC (OHCI) Host mode DMA Ext2 File System Performance
25
DaVinci_Linux_Drivers_Datasheet
Driver Features
The driver supports the following feature
1. DMA mode
2. PIO mode
3. File backed storage driver was tested with SD media as the storage medium
Features Not Supported
None
Constraint
None
Supported System Calls
NA
Supported IOCTLS
NA
Performance Benchmarks
Description
26
DaVinci_Linux_Drivers_Datasheet
DA850/OMAP-L138
USB Slave-DMA Performance
USB Slave-DMA-Read Performance values
Bytes Transferred (MB)
1024
Bytes Transferred (MB)
Number of files transferred
1
Total Bytes transferred (MB)
1024
USB Slave-DMA-Write Performance values
Number of files transferred
1024
1
The performance numbers are captured using the following.
Total Bytes transferred (MB)
1024
Data Rate (MB/sec)
13
Data Rate (MB/sec)
6
1. SATA HDD - Seagate Baracuda 7200 RPM 500GB drive
2. File format: vfat on Windows XP
3. Power Management: off
USB CDC/RNDIS Slave Driver
Description
The CDC RNDIS gadget driver that is used to send standard Ethernet frames using USB. The driver will create an Ethernet device by the name usb0.
Driver Features
The driver supports the following feature
DA850/OMAP-L138
27
DaVinci_Linux_Drivers_Datasheet
1. DMA mode
2. PIO mode
3. 10/100 Mbps speed.
Features Not Supported
None
Constraint
None
Supported System Calls
open(), close(), read(), write(), ioctl()
Supported IOCTLS
None
Performance Benchmarks
Performance benchmarks were collected using the Iperf tool and default options were used to collect the throughput numbers.
DA850/OMAP-L138
USB CDC-DMA Performance
USB CDC-DMA Performance values - Client
TCP window size (in KBytes)
Bandwidth (Mbits/Sec) Transfer size (in Mbytes)
Interval (in sec)
16
41
49
10
32
42
50
10
64
43
51
10
128
43
51
10
USB RNDIS-DMA Performance
USB RNDIS-DMA Performance values - Client
TCP window size (in KBytes)
Driver Features
Bandwidth (Mbits/Sec) Transfer size (in Mbytes)
Interval (in sec)
16
32
38
10
32
32
38
10
64
32
38
10
128
32
38
10
28
DaVinci_Linux_Drivers_Datasheet
USB Human Interface Device (HID) Driver
Description
The event sub system creates /dev/input/event* devices with the help of mdev.
Driver Features
The driver supports the following feature
1. DMA mode
2. PIO mode
3. USB Mouse and Keyboards that conform to the USB HID specifications
Features Not Supported
None
Constraint
None
Supported System Calls
NA
Supported IOCTLS
NA
Performance Benchmarks
NA
USB Isochronous Driver
Description
USB camera, speaker and mic uses isochronouse transfers. USB Video Class (UVC) is used by most of the USB cameras to capture image.
Driver Features
The driver supports the following feature
1. DMA mode
2. PIO mode
3. Support for USB Audio and video class(UVC class)
Features Not Supported
None
USB Human Interface Device (HID) Driver
29
DaVinci_Linux_Drivers_Datasheet
Constraint
None
Supported System Calls
NA
Supported IOCTLS
NA
Performance Benchmarks
NA
USB OTG Driver
Description
MUSB controller on DaVinci supports USB On The Go (OTG). OTG protocol enables runtime role switch between USB host and device. This is achived
using Session Request Protocol (SRP) and Host Negotiation Protocol (HNP). OTG driver is tested with OPT (OTG Protocol Tester).
Driver Features
The driver supports the following feature
Features Not Supported
OTG
Constraint
None
Supported System Calls
NA
Supported IOCTLS
NA
Performance Benchmarks
NA
SATA
SATA
30
DaVinci_Linux_Drivers_Datasheet
Description
SATA peripheral is AHCI Ver.1.1 spec compliant peripheral. It supports SATA1 (150MBps) and SATA 2 (300MBps) speeds over one SATA port. Port
Multiplier support is available in the SATA controller. The controller can support drives upto UDMA-133 speeds.
Driver Features
Registers as a SCSI controller with the Linux SCSI Subsystem. SATA devices get registered as SCSI devices and can be accessed as "/dev/sd{*}" devices.
Port Multiplier support
Driver Features Not Supported
Constraint
None
Supported System Calls
NA
Supported IOCTLS
NA
Performance Benchmarks
SATA - VFAT File System Performance
SATA - Write Performance values
Buffer Size (in KBytes)
Total Bytes Transferred (in MBytes)
Transfer Rate (in MBytes/sec)
CPU Load (in %)
100
100
18
100
500
100
19
100
1024
100
16.5
90
5120
100
19
100
SATA - VFAT File System Performance =
SATA - Read Performance values
Buffer Size (in KBytes)
Total Bytes Transferred (in MBytes)
Transfer Rate (in MBytes/sec)
CPU Load (in %)
100
100
32
100
500
100
33
97
1024
100
32
98.75
5120
100
32
96
The performance numbers are captured using the following.
1. SATA HDD - Seagate Baracuda 7200 RPM 500GB drive
2. File format: vfat
3. Power Management: off
Description
31
DaVinci_Linux_Drivers_Datasheet
McBSP
Description
Multi-channel Buffer Serial Port (McBSP) peripheral is primarily used for serial data transfer like in the case of audio interfaces. McBSP supports DMA
mode of transfer and hence is suitable for real-time audio applications. The McBSP driver provides APIs to the programmer to control McBSP.
Driver Features
1. The driver is an API driver.
2. Supports multiple instances of the peripheral.
3. Supports master transmitter and slave receiver operation.
4. Supports multi-channel selection mode of operation.
5. Supports configuration of word length, frame length, sample frequency.
Driver Features Not Supported
Slave transmitter, master receiver combination.
Constraint
The test setup consists of Interposers connecting two EVMs with the necessary connections wired. Using this setup, the maximum frame length that has been
tested is 32. Beyond this the test results are not stable.
Supported System Calls
NA
Supported IOCTLS
NA
Performance Benchmarks
McBSP
32