NOTICE: The Processors Wiki will End-of-Life on January 15, 2021. It is recommended to download any files or other content you may need that are hosted on processors.wiki.ti.com. The site is now set to read only.

DaVinci PSP 03.22.00.02 Device Driver Features and Performance Guide

From Texas Instruments Wiki
Jump to: navigation, search

TIBanner.png

Contents

Document License[edit]

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.


Read This First[edit]

About This Manual[edit]

This document provides an overview and performance data for the device drivers which are part of the DaVinci Linux PSP package.

NOTE
For DA850/OMAP-L138/AM18x EVM, the performance numbers have been recorded with cpuidle driver enabled and with cpufreq governor set to userspace.


If You Need Assistance[edit]

For further information or to report any problems, contact http://community.ti.com/ or http://support.ti.com/

Trademarks[edit]

OMAPTM and DaVinciTM are trademarks of Texas Instruments, Incorporated. All other trademarks are the properties of their respective owners.


Support Overview[edit]

Boot Modes Supported[edit]

The following table provides information on the boot modes supported. Green color in the table below means that the particular boot mode is supported on the device.

DaVinci Supported Boot Modes
Boot Mode DA850/OMAP-L138/AM18x
SPI Flash
NAND Flash
NOR Flash
MMC/SD


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.


U-Boot Support[edit]

U-Boot is the defacto bootloader for Linux kernel on ARM. The following features of U-Boot are supported in this release:

U-Boot supported feature table
Feature DA850/OMAP-L138/AM18x
UART
Ethernet Download (TFTP)
MMC/SD
SPI Flash
NAND flash
NOR Flash


Device Driver List[edit]

The following table list the various device drivers supported and the device they are supported on. On detailed information on specific features or limitations of a pariticular driver, refer to the chapter catering to that driver in this document.

Peripheral Driver Support
Peripheral Description Linux driver type DMA usage
Audio (McASP) Audio Record and Playback ALSA SoC EDMA3
EMAC Ethernet Network driver Netdev

EMAC Internal DMA

USB MSC Host USB Mass Storage Class Host Driver Block USB Internal DMA
USB HID Host USB Human Interface Device Host Driver Input driver USB Internal DMA
USB MUSB HCD MUSB Host controller driver USB HCD USB Internal DMA
USB OHCI HCD OHCI Host controller driver USB HCD USB Internal DMA
NAND Flash Flash storage system MTD Character and Block Not Supported
NOR Flash Flash storage system MTD Character and Block Not Supported
GLCD Graphical LCD driver Frame Buffer LCDC Internal DMA
CLCD Character LCD driver Parallel port based driver None
SPI Flash Flash storage system MTD Character and Block EDMA3
MMC/SD Interface to MultiMedia Secure Digital cards Block EDMA3
UART Serial Communication Interface Character Not Supported
I2C Inter-IC Communication Character Not Supported
RTC Real-time clock Character None
Watchdog Watchdog Timer Miscellaneous None
SPI Serial Peripheral Interface Character EDMA3
SATA Serial ATA Interface Block SATA Internal DMA
Video Port Interface (VPIF) Video Display and Capture V4L2 (Video for Linux version 2) VPIF Internal DMA
Power Management Linux drivers cpuidle, cpufreq and Suspend-to-RAM Misc None
Touchscreen Drivers for TPS65070 Input driver None
eCAP PWM Capture and Generation Miscellaneous None
eHRPWM PWM generation Miscellaneous None


Boot-time measurement[edit]

Utility available here was used to find out the boot-time.

DA850/OMAP-L138/AM18x[edit]

For boot-time measurement following setup was used:

  • SPL and U-Boot was in SPI flash.
  • Kernel image size of 2455936 bytes stored in FAT partition of SD card
  • arago-base image as file system stored in EXT2 partition of SD card
  • Sandisk 8GB SD card
  • U-Boot had 3 seconds of boot delay
0.000 0.000: SPI boot...
0.006 0.006: SF: Detected M25P64 with page size 64 KiB, total 8 MiB
0.128 0.122: 
0.128 0.000: 
0.133 0.005: U-Boot 2012.04.01-00014-g864c4a3 (Jun 26 2012 - 12:16:32)
0.136 0.003: 
0.136 0.000: I2C:   ready
0.140 0.004: DRAM:  128 MiB
0.156 0.016: WARNING: Caches not enabled
0.168 0.012: MMC:   davinci: 0
0.176 0.008: SF: Detected M25P64 with page size 64 KiB, total 8 MiB
0.292 0.116: In:    serial
0.292 0.000: Out:   serial
0.292 0.000: Err:   serial
0.300 0.007: SF: Detected M25P64 with page size 64 KiB, total 8 MiB
0.305 0.005: Default using MAC address from environment
0.308 0.004: Default using MAC address from environment
0.316 0.008: Net:   DaVinci-EMAC
3.324 3.008: Hit any key to stop autoboot:  0 
3.416 0.092: reading uImage
4.432 1.016: 
4.432 0.000: 2456000 bytes read
4.437 0.005: ## Booting kernel from Legacy Image at c0700000 ...
4.440 0.003:    Image Name:   Linux-3.3.0+
4.445 0.005:    Image Type:   ARM Linux Kernel Image (uncompressed)
4.448 0.003:    Data Size:    2455936 Bytes = 2.3 MiB
4.452 0.004:    Load Address: c0008000
4.452 0.000:    Entry Point:  c0008000
5.076 0.624:    Verifying Checksum ... OK
5.880 0.804:    Loading Kernel Image ... OK
5.896 0.016: OK
5.896 0.000: 
5.896 0.000: Starting kernel ...
5.896 0.000: 
7.524 1.628: Uncompressing Linux... done, booting the kernel.
8.788 1.264: Booting Linux on physical CPU 0
8.804 0.016: Linux version 3.3.0+ (prakash@linux-psp-server.india.ext.ti.com) (gcc version 4.5.3 20110311 (prerelease) (GCC) ) #199 PREEMPT Thu Jun 21 15:45:54 IST 2012
8.810 0.006: CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177
8.812 0.002: CPU: VIVT data cache, VIVT instruction cache
8.816 0.004: Machine: DaVinci DA850/OMAP-L138/AM18x EVM
8.821 0.005: Memory policy: ECC disabled, Data cache writeback
8.828 0.007: BUG: mapping for 0x80000000 at 0xfffe0000 out of vmalloc space
8.828 0.000: DaVinci da850/omap-l138 variant 0x0
8.836 0.008: Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 8128
8.842 0.006: Kernel command line: mem=32M console=ttyS2,115200n8 root=/dev/mmcblk0p3 rw rootwait ip=off
8.848 0.006: PID hash table entries: 128 (order: -3, 512 bytes)
8.853 0.005: Dentry cache hash table entries: 4096 (order: 2, 16384 bytes)
8.860 0.008: Inode-cache hash table entries: 2048 (order: 1, 8192 bytes)
8.860 0.000: Memory: 32MB = 32MB total
8.865 0.005: Memory: 27236k/27236k available, 5532k reserved, 0K highmem
8.868 0.003: Virtual kernel memory layout:
8.872 0.004:     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
8.880 0.008:     fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
8.885 0.005:     vmalloc : 0xc2800000 - 0xff000000   ( 968 MB)
8.888 0.003:     lowmem  : 0xc0000000 - 0xc2000000   (  32 MB)
8.893 0.005:     modules : 0xbf000000 - 0xc0000000   (  16 MB)
8.896 0.003:       .text : 0xc0008000 - 0xc0492000   (4648 kB)
8.902 0.006:       .init : 0xc0492000 - 0xc04bc000   ( 168 kB)
8.904 0.002:       .data : 0xc04bc000 - 0xc04f6c00   ( 235 kB)
8.909 0.005:        .bss : 0xc04f6c24 - 0xc051454c   ( 119 kB)
8.916 0.007: SLUB: Genslabs=13, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
8.916 0.000: NR_IRQS:245
8.921 0.005: Console: colour dummy device 80x30
8.924 0.003: Calibrating delay loop... 148.88 BogoMIPS (lpj=744448)
8.928 0.004: pid_max: default: 32768 minimum: 301
8.933 0.005: Mount-cache hash table entries: 512
8.936 0.003: CPU: Testing write buffer coherency: ok
8.941 0.005: Setting up static identity map for 0xc036ff40 - 0xc036ff98
8.944 0.003: gpiochip_add: registered GPIOs 0 to 31 on device: DaVinci
8.949 0.005: gpiochip_add: registered GPIOs 32 to 63 on device: DaVinci
8.956 0.007: gpiochip_add: registered GPIOs 64 to 95 on device: DaVinci
8.961 0.005: gpiochip_add: registered GPIOs 96 to 127 on device: DaVinci
8.968 0.007: gpiochip_add: registered GPIOs 128 to 143 on device: DaVinci
8.968 0.000: DaVinci: 144 gpio irqs
8.973 0.005: print_constraints: dummy: 
8.973 0.000: NET: Registered protocol family 16
8.984 0.011: da850_evm_init: eHRPWM module 0 cannot be used since it is being used by MII interface
8.989 0.005: da850_evm_init: eHRPWM module1 outputA cannot be used since it is being used by LCD
8.996 0.007: da850_evm_init: eHRPWM module1 outputB cannot be used since it is being used by spi1
9.001 0.005: bio: create slab <bio-0> at 0
9.001 0.000: SCSI subsystem initialized
9.008 0.007: usbcore: registered new interface driver usbfs
9.014 0.006: usbcore: registered new interface driver hub
9.014 0.000: usbcore: registered new device driver usb
9.020 0.006: print_constraints: VDCDC1: 3200 <--> 3300 mV at 3300 mV 
9.025 0.005: print_constraints: VDCDC2: 1750 <--> 3300 mV at 3300 mV 
9.028 0.003: print_constraints: VDCDC3: 950 <--> 1350 mV at 1200 mV 
9.033 0.005: print_constraints: LDO1: 1800 mV 
9.036 0.003: print_constraints: LDO2: 1150 <--> 1300 mV at 1200 mV 
9.042 0.006: pca953x 1-0020: failed reading register
9.044 0.002: pca953x 1-0021: interrupt support not compiled in
9.052 0.008: gpiochip_add: registered GPIOs 160 to 175 on device: tca6416
9.056 0.005: i2c-gpio i2c-gpio.1: using pins 20 (SDA) and 21 (SCL)
9.060 0.003: Advanced Linux Sound Architecture Driver Version 1.0.24.
9.065 0.005: Switching to clocksource timer0_1
9.068 0.003: musb-hdrc: version 6.0, ?dma?, otg (peripheral+host)
9.074 0.006: musb-hdrc musb-hdrc: dma type: dma-cppi41
9.076 0.002: MUSB255 controller's USBSS revision = 4ea11003
9.081 0.005: Waiting for USB PHY clock good...
9.088 0.007: musb-hdrc musb-hdrc: USB OTG mode controller at fee00000 using DMA, IRQ 58
9.088 0.000: NET: Registered protocol family 2
9.093 0.005: IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
9.100 0.007: TCP established hash table entries: 1024 (order: 1, 8192 bytes)
9.105 0.005: TCP bind hash table entries: 1024 (order: 0, 4096 bytes)
9.112 0.007: TCP: Hash tables configured (established 1024 bind 1024)
9.112 0.000: TCP reno registered
9.117 0.005: UDP hash table entries: 256 (order: 0, 4096 bytes)
9.120 0.003: UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
9.124 0.004: NET: Registered protocol family 1
9.130 0.006: RPC: Registered named UNIX socket transport module.
9.132 0.002: RPC: Registered udp transport module.
9.137 0.005: RPC: Registered tcp transport module.
9.140 0.003: RPC: Registered tcp NFSv4.1 backchannel transport module.
9.145 0.005: EMAC: MII PHY configured, RMII PHY will not be functional
9.153 0.008: JFFS2 version 2.2. (NAND) © 2001-2006 Red Hat, Inc.
9.153 0.000: msgmni has been set to 53
9.156 0.004: io scheduler noop registered (default)
9.164 0.008: da8xx_lcdc da8xx_lcdc.0: GLCD: Found Sharp_LK043T1DG01 panel
9.169 0.005: Console: switching to colour frame buffer device 60x34
9.172 0.003: Serial: 8250/16550 driver, 3 ports, IRQ sharing disabled
9.177 0.005: serial8250.0: ttyS0 at MMIO 0x1c42000 (irq = 25) is a AR7
9.184 0.007: serial8250.0: ttyS1 at MMIO 0x1d0c000 (irq = 53) is a AR7
9.190 0.006: serial8250.0: ttyS2 at MMIO 0x1d0d000 (irq = 61) is a AR7
9.190 0.000: console [ttyS2] enabled
9.200 0.010: brd: module loaded
9.208 0.008: ahci ahci: forcing PORTS_IMPL to 0x1
9.216 0.008: ahci ahci: AHCI 0001.0100 32 slots 1 ports 3 Gbps 0x1 impl platform mode
9.221 0.005: ahci ahci: flags: ncq sntf pm led clo only pmp pio slum part ccc 
9.232 0.011: scsi0 : ahci_platform
9.240 0.008: ata1: SATA max UDMA/133 mmio [mem 0x01e18000-0x01e19fff] port 0x100 irq 67
9.252 0.012: spi_davinci spi_davinci.1: DMA: supported
9.257 0.005: spi_davinci spi_davinci.1: DMA: RX channel: 18, TX channel: 19, event queue: 0
9.264 0.007: m25p80 spi1.0: m25p64 (8192 Kbytes)
9.269 0.005: Creating 6 MTD partitions on "m25p80":
9.276 0.007: 0x000000000000-0x000000010000 : "UBL"
9.285 0.009: 0x000000010000-0x000000090000 : "U-Boot"
9.296 0.011: 0x000000090000-0x0000000a0000 : "U-Boot-Env"
9.306 0.010: 0x0000000a0000-0x000000320000 : "Kernel"
9.316 0.010: 0x000000320000-0x000000720000 : "Filesystem"
9.328 0.012: 0x0000007f0000-0x000000800000 : "MAC-Address"
9.340 0.012: Read MAC addr from SPI Flash: ff:ff:ff:ff:ff:ff
9.348 0.008: spi_davinci spi_davinci.1: Controller at 0xfef0e000
9.408 0.061: davinci_mdio davinci_mdio.0: davinci mdio revision 1.5
9.412 0.004: davinci_mdio davinci_mdio.0: detected phy mask fffffffe
9.416 0.004: davinci_mdio.0: probed
9.424 0.008: davinci_mdio davinci_mdio.0: phy[0]: device davinci_mdio-0:00, driver SMSC LAN8710/LAN8720
9.432 0.008: ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
9.436 0.004: ohci ohci.0: DA8xx OHCI
9.440 0.004: ohci ohci.0: new USB bus registered, assigned bus number 1
9.444 0.004: Waiting for USB PHY clock good...
9.448 0.004: ohci ohci.0: irq 59, io mem 0x01e25000
9.516 0.068: hub 1-0:1.0: USB hub found
9.516 0.000: hub 1-0:1.0: 1 port detected
9.524 0.008: Initializing USB Mass Storage driver...
9.529 0.005: usbcore: registered new interface driver usb-storage
9.532 0.003: USB Mass Storage support registered.
9.544 0.012: input: gpio-keys-polled as /devices/platform/gpio-keys-polled.1/input/input0
9.564 0.020: input: TPS6507x Touchscreen as /devices/platform/i2c-gpio.1/i2c-1/1-0048/input/input1
9.572 0.008: omap_rtc omap_rtc: rtc core: registered omap_rtc as rtc0
9.576 0.004: omap_rtc: RTC power up reset detected
9.580 0.004: i2c /dev entries driver
9.588 0.008: lirc_dev: IR Remote Control driver registered, major 253 
9.592 0.004: ata1: SATA link down (SStatus 0 SControl 300)
9.596 0.004: IR NEC protocol handler initialized
9.604 0.008: IR RC5(x) protocol handler initialized
9.608 0.004: IR RC6 protocol handler initialized
9.608 0.000: IR JVC protocol handler initialized
9.612 0.004: IR Sony protocol handler initialized
9.616 0.004: IR RC5 (streamzap) protocol handler initialized
9.620 0.004: IR SANYO protocol handler initialized
9.624 0.004: IR MCE Keyboard/mouse protocol handler initialized
9.632 0.008: IR LIRC bridge handler initialized
9.636 0.005: Linux video capture interface: v2.00
9.640 0.004: usbcore: registered new interface driver uvcvideo
9.644 0.004: USB Video Class driver (1.1.1)
9.648 0.004: watchdog watchdog: heartbeat 60 sec
9.652 0.004: cpuidle: using governor ladder
9.660 0.008: cpuidle: using governor menu
9.668 0.008: davinci_mmc davinci_mmc.0: Using DMA, 4-bit mode
9.676 0.008: usbcore: registered new interface driver usbhid
9.680 0.004: usbhid: USB HID core driver
9.688 0.008: usbcore: registered new interface driver snd-usb-audio
9.704 0.016: soc-audio soc-audio.0: ASoC: Failed to create card debugfs directory
9.712 0.008: _regulator_get: 1-0018 supply IOVDD not found, using dummy regulator
9.720 0.008: _regulator_get: 1-0018 supply DVDD not found, using dummy regulator
9.732 0.012: _regulator_get: 1-0018 supply AVDD not found, using dummy regulator
9.736 0.004: _regulator_get: 1-0018 supply DRVDD not found, using dummy regulator
9.760 0.024: asoc: tlv320aic3x-hifi <-> davinci-mcasp.0 mapping ok
9.772 0.011: ALSA device list:
9.772 0.000:   #0: DA850/OMAP-L138 EVM
9.776 0.004: TCP cubic registered
9.780 0.004: NET: Registered protocol family 17
9.796 0.016: regulator_init_complete: LDO2: incomplete constraints, leaving on
9.804 0.008: regulator_init_complete: LDO1: incomplete constraints, leaving on
9.808 0.004: regulator_init_complete: VDCDC3: incomplete constraints, leaving on
9.820 0.012: regulator_init_complete: VDCDC2: incomplete constraints, leaving on
9.824 0.005: mmc0: new high speed SDHC card at address e624
9.832 0.008: regulator_init_complete: VDCDC1: incomplete constraints, leaving on
9.832 0.000: console [netcon0] enabled
9.836 0.004: netconsole: network logging started
9.844 0.008: mmcblk0: mmc0:e624 SD08G 7.40 GiB 
9.852 0.008: davinci_emac davinci_emac.1: using random MAC addr: de:9f:e9:79:30:9d
9.856 0.004:  mmcblk0: p1 p2 p3
9.880 0.024: omap_rtc omap_rtc: setting system clock to 2000-01-01 00:00:00 UTC (946684800)
9.896 0.017: EXT2-fs (mmcblk0p3): warning: mounting unchecked fs, running e2fsck is recommended
9.912 0.015: VFS: Mounted root (ext2 filesystem) on device 179:3.
9.916 0.004: Freeing init memory: 168K
INIT: version 2.86 booting
10.452 0.337: Please wait: booting...
10.580 0.127: Starting udev
13.076 2.497: udevd (614): /proc/614/oom_adj is deprecated, please use /proc/614/oom_score_adj instead.
13.084 0.008: udev: starting version 141
13.120 0.036: udevd[614]: unable to move watches dir '/dev/.udev/watch', old watches will not be restored: Directory not empty
17.832 4.712: Remounting root file system...
18.232 0.400: modprobe: FATAL: Could not load /lib/modules/3.3.0+/modules.dep: No such file or directory
18.232 0.000: 
18.353 0.120: Caching udev devnodes
20.500 2.147: Populating dev cachekjournald starting.  Commit interval 5 seconds
20.504 0.004: EXT3-fs (mmcblk0p2): using internal journal
20.508 0.004: EXT3-fs (mmcblk0p2): recovery complete
20.520 0.012: EXT3-fs (mmcblk0p2): mounted filesystem with writeback data mode
21.004 0.484: mv: cannot rename '/tmp/uname': No such file or directory
21.076 0.072: WARNING: Couldn't open directory /lib/modules/3.3.0+: No such file or directory
21.084 0.009: FATAL: Could not open /lib/modules/3.3.0+/modules.dep.temp for writing: No such file or directory
21.340 0.255: logger: mount: mount point /proc/bus/usb does not exist
22.976 1.636: Configuring network interfaces... davinci_mdio davinci_mdio.0: resetting idled controller
22.988 0.012: net eth0: attached PHY driver [SMSC LAN8710/LAN8720] (mii_bus:phy_addr=davinci_mdio-0:00, id=7c0f1)
23.052 0.064: udhcpc (v1.13.2) started
23.276 0.224: Sending discover...
26.280 3.004: Sending discover...
29.284 3.004: Sending discover...
32.344 3.060: No lease, failing
32.352 0.008: done.
32.392 0.040: Setting up IP spoofing protection: rp_filter.
32.788 0.396: Thu Mar 18 18:14:00 UTC 2010
INIT: Entering runlevel: 5
33.000 0.144: Starting telnet daemon.
33.060 0.060: modprobe: FATAL: Could not load /lib/modules/3.3.0+/modules.dep: No such file or directory
33.060 0.000: 
33.168 0.108: Starting syslogd/klogd: done
33.464 0.296: Starting thttpd.
34.792 1.328: 
34.800 0.008:  _____                    _____           _         _   
34.804 0.004: |  _  |___ ___ ___ ___   |  _  |___ ___  |_|___ ___| |_ 
34.808 0.004: |     |  _| .'| . | . |  |   __|  _| . | | | -_|  _|  _|
34.816 0.008: |__|__|_| |__,|_  |___|  |__|  |_| |___|_| |___|___|_|  
34.820 0.004:               |___|                    |___|            
34.820 0.000: 
34.824 0.004: Arago Project http://arago-project.org arago ttyS2
34.824 0.000: 
34.828 0.004: Arago 2010.03 arago ttyS2
34.828 0.000: 


It is taking close to 35 seconds to boot DA850/OMAP-L138/AM18x EVM.

Power Management measurements[edit]

Suspend/Resume timings[edit]

It takes 242.665 msecs to suspend and 632.285 msecs to resume with default kernel. Please find below log for individual module timings, captured by appending initcall_debug to kernel bootargs.

root@arago:~# rtcwake -s 2 -d /dev/rtc0 -m mem
wakeup from "mem" at Sat Jan  1 00:00:48 2000
PM: Syncing filesystems ... done.
Freezing user space processes ... (elapsed 0.01 seconds) done.
Freezing remaining freezable tasks ... (elapsed 0.01 seconds) done.
Suspending console(s) (use no_console_suspend to debug)
calling  mmc0:e624+ @ 1298, parent: mmc0
call mmc0:e624+ returned 0 after 10 usecs
calling  soc-audio.0+ @ 1298, parent: platform
call soc-audio.0+ returned 0 after 1037 usecs
calling  snd-soc-dummy+ @ 1298, parent: platform
call snd-soc-dummy+ returned 0 after 4 usecs
calling  rtc0+ @ 1298, parent: omap_rtc
call rtc0+ returned 0 after 27 usecs
calling  input1+ @ 1298, parent: 1-0048
call input1+ returned 0 after 3 usecs
calling  input0+ @ 1298, parent: gpio-keys-polled.1
call input0+ returned 0 after 3 usecs
calling  usb1+ @ 5, parent: ohci.0
call usb1+ returned 0 after 70 usecs
calling  davinci_mdio-0:00+ @ 1298, parent: davinci_mdio.0
call davinci_mdio-0:00+ returned 0 after 108 usecs
calling  mtd5ro+ @ 1298, parent: spi1.0
call mtd5ro+ returned 0 after 3 usecs
calling  mtd5+ @ 1298, parent: spi1.0
call mtd5+ returned 0 after 2 usecs
calling  mtd4ro+ @ 1298, parent: spi1.0
call mtd4ro+ returned 0 after 1 usecs
calling  mtd4+ @ 1298, parent: spi1.0
call mtd4+ returned 0 after 1 usecs
calling  mtd3ro+ @ 1298, parent: spi1.0
call mtd3ro+ returned 0 after 1 usecs
calling  mtd3+ @ 1298, parent: spi1.0
call mtd3+ returned 0 after 1 usecs
calling  mtd2ro+ @ 1298, parent: spi1.0
call mtd2ro+ returned 0 after 1 usecs
calling  mtd2+ @ 1298, parent: spi1.0
call mtd2+ returned 0 after 2 usecs
calling  mtd1ro+ @ 1298, parent: spi1.0
call mtd1ro+ returned 0 after 1 usecs
calling  mtd1+ @ 1298, parent: spi1.0
call mtd1+ returned 0 after 1 usecs
calling  mtd0ro+ @ 1298, parent: spi1.0
call mtd0ro+ returned 0 after 1 usecs
calling  mtd0+ @ 1298, parent: spi1.0
call mtd0+ returned 0 after 1 usecs
calling  spi1.0+ @ 1298, parent: spi1
call spi1.0+ returned 0 after 3 usecs
calling  host0+ @ 5, parent: ata1
call host0+ returned 0 after 5 usecs
calling  ata1+ @ 5, parent: ahci
call ata1+ returned 0 after 218 usecs
calling  serial8250+ @ 1298, parent: platform
call serial8250+ returned 0 after 6 usecs
calling  alarmtimer+ @ 1298, parent: platform
call alarmtimer+ returned 0 after 6 usecs
calling  davinci_emac.1+ @ 1298, parent: platform
call davinci_emac.1+ returned 0 after 1949 usecs
calling  davinci_mdio.0+ @ 1298, parent: platform
call davinci_mdio.0+ returned 0 after 23 usecs
calling  nop_usb_xceiv.0+ @ 1298, parent: platform
call nop_usb_xceiv.0+ returned 0 after 2 usecs
calling  1-0073+ @ 1298, parent: i2c-1
call 1-0073+ returned 0 after 3 usecs
calling  1-0065+ @ 1298, parent: i2c-1
call 1-0065+ returned 0 after 2 usecs
calling  leds-gpio+ @ 1298, parent: platform
call leds-gpio+ returned 0 after 1 usecs
calling  gpio-keys-polled.1+ @ 1298, parent: platform
call gpio-keys-polled.1+ returned 0 after 2 usecs
calling  1-0021+ @ 1298, parent: i2c-1
call 1-0021+ returned 0 after 2 usecs
calling  1-0020+ @ 1298, parent: i2c-1
call 1-0020+ returned 0 after 1 usecs
calling  1-0018+ @ 1298, parent: i2c-1
call 1-0018+ returned 0 after 2 usecs
calling  tps6507x-ts+ @ 1298, parent: 1-0048
call tps6507x-ts+ returned 0 after 2 usecs
calling  tps6507x-pmic+ @ 1298, parent: 1-0048
call tps6507x-pmic+ returned 0 after 2 usecs
calling  1-0048+ @ 1298, parent: i2c-1
call 1-0048+ returned 0 after 3 usecs
calling  i2c-1+ @ 1298, parent: i2c-gpio.1
call i2c-1+ returned 0 after 1 usecs
calling  musb-hdrc+ @ 1298, parent: musb-da8xx
call musb-hdrc+ returned 0 after 3 usecs
calling  ecap.2+ @ 1298, parent: platform
call ecap.2+ returned 0 after 1 usecs
calling  pwm-backlight+ @ 1298, parent: platform
call pwm-backlight+ returned 0 after 1 usecs
calling  ohci.0+ @ 1298, parent: platform
call ohci.0+ returned 0 after 13239 usecs
calling  musb-da8xx+ @ 1298, parent: platform
call musb-da8xx+ returned 0 after 15 usecs
calling  ahci+ @ 1298, parent: platform
call ahci+ returned 0 after 5 usecs
calling  spi_davinci.1+ @ 1298, parent: platform
call spi_davinci.1+ returned 0 after 13 usecs
calling  pm-davinci+ @ 1298, parent: platform
call pm-davinci+ returned 0 after 2 usecs
calling  cpuidle-davinci.0+ @ 1298, parent: platform
call cpuidle-davinci.0+ returned 0 after 2 usecs
calling  cpufreq-davinci+ @ 1298, parent: platform
call cpufreq-davinci+ returned 0 after 2 usecs
calling  omap_rtc+ @ 1298, parent: platform
call omap_rtc+ returned 0 after 12 usecs
calling  da8xx_lcdc.0+ @ 1298, parent: platform
call da8xx_lcdc.0+ returned 0 after 213239 usecs
calling  pruss_uio+ @ 1298, parent: platform
call pruss_uio+ returned 0 after 2 usecs
calling  davinci-mcasp.0+ @ 1298, parent: platform
call davinci-mcasp.0+ returned 0 after 2 usecs
calling  davinci-pcm-audio+ @ 1298, parent: platform
call davinci-pcm-audio+ returned 0 after 1 usecs
calling  serial8250.0+ @ 1298, parent: platform
call serial8250.0+ returned 0 after 92 usecs
calling  davinci_mmc.0+ @ 1298, parent: platform
call davinci_mmc.0+ returned 0 after 1135 usecs
calling  watchdog+ @ 1298, parent: platform
call watchdog+ returned 0 after 3 usecs
calling  i2c-gpio.1+ @ 1298, parent: platform
call i2c-gpio.1+ returned 0 after 2 usecs
calling  edma+ @ 1298, parent: platform
call edma+ returned 0 after 1 usecs
calling  reg-dummy+ @ 1298, parent: platform
call reg-dummy+ returned 0 after 2 usecs
PM: suspend of devices complete after 242.665 msecs
PM: late suspend of devices complete after 0.705 msecs
PM: Calling irq_gc_suspend+0x0/0x50
PM: Calling timekeeping_suspend+0x0/0x150
PM: Calling leds_suspend+0x0/0x28
PM: Calling cpufreq_bp_suspend+0x0/0x64
PM: Calling cpu_pm_suspend+0x0/0x20
PM: Calling cpu_pm_resume+0x0/0x18
PM: Calling cpufreq_bp_resume+0x0/0x68
PM: Calling leds_resume+0x0/0x24
PM: Calling timekeeping_resume+0x0/0x138
PM: Calling irq_gc_resume+0x0/0x4c
PM: Calling irq_pm_syscore_resume+0x0/0x18
calling  musb-hdrc+ @ 1298, parent: musb-da8xx
call musb-hdrc+ returned 0 after 3 usecs
PM: early resume of devices complete after 0.620 msecs
calling  reg-dummy+ @ 1298, parent: platform
call reg-dummy+ returned 0 after 5 usecs
calling  edma+ @ 1298, parent: platform
call edma+ returned 0 after 2 usecs
calling  i2c-gpio.1+ @ 1298, parent: platform
call i2c-gpio.1+ returned 0 after 2 usecs
calling  watchdog+ @ 1298, parent: platform
call watchdog+ returned 0 after 2 usecs
calling  davinci_mmc.0+ @ 1298, parent: platform
call davinci_mmc.0+ returned 0 after 58973 usecs
calling  serial8250.0+ @ 1298, parent: platform
call serial8250.0+ returned 0 after 232 usecs
calling  davinci-pcm-audio+ @ 1298, parent: platform
call davinci-pcm-audio+ returned 0 after 3 usecs
calling  davinci-mcasp.0+ @ 1298, parent: platform
call davinci-mcasp.0+ returned 0 after 2 usecs
calling  pruss_uio+ @ 1298, parent: platform
call pruss_uio+ returned 0 after 1 usecs
calling  da8xx_lcdc.0+ @ 1298, parent: platform
call da8xx_lcdc.0+ returned 0 after 223391 usecs
calling  omap_rtc+ @ 1298, parent: platform
call omap_rtc+ returned 0 after 14 usecs
calling  cpufreq-davinci+ @ 1298, parent: platform
call cpufreq-davinci+ returned 0 after 2 usecs
calling  cpuidle-davinci.0+ @ 1298, parent: platform
call cpuidle-davinci.0+ returned 0 after 2 usecs
calling  pm-davinci+ @ 1298, parent: platform
call pm-davinci+ returned 0 after 1 usecs
calling  spi_davinci.1+ @ 1298, parent: platform
call spi_davinci.1+ returned 0 after 23 usecs
calling  ahci+ @ 1298, parent: platform
call ahci+ returned 0 after 21 usecs
calling  ata1+ @ 5, parent: ahci
calling  musb-da8xx+ @ 1298, parent: platform
Waiting for USB PHY clock good...
call musb-da8xx+ returned 0 after 318 usecs
calling  ohci.0+ @ 1298, parent: platform
Waiting for USB PHY clock good...
call ohci.0+ returned 0 after 33 usecs
calling  usb1+ @ 1299, parent: ohci.0
calling  pwm-backlight+ @ 1298, parent: platform
call pwm-backlight+ returned 0 after 3 usecs
calling  ecap.2+ @ 1298, parent: platform
call ecap.2+ returned 0 after 1 usecs
calling  musb-hdrc+ @ 1298, parent: musb-da8xx
call musb-hdrc+ returned 0 after 2 usecs
calling  i2c-1+ @ 1298, parent: i2c-gpio.1
call i2c-1+ returned 0 after 2 usecs
calling  1-0048+ @ 1298, parent: i2c-1
call 1-0048+ returned 0 after 2 usecs
calling  tps6507x-pmic+ @ 1298, parent: 1-0048
call tps6507x-pmic+ returned 0 after 1 usecs
calling  tps6507x-ts+ @ 1298, parent: 1-0048
call tps6507x-ts+ returned 0 after 2 usecs
calling  1-0018+ @ 1298, parent: i2c-1
call 1-0018+ returned 0 after 2 usecs
calling  1-0020+ @ 1298, parent: i2c-1
call 1-0020+ returned 0 after 1 usecs
calling  1-0021+ @ 1298, parent: i2c-1
call 1-0021+ returned 0 after 2 usecs
calling  gpio-keys-polled.1+ @ 1298, parent: platform
call gpio-keys-polled.1+ returned 0 after 1 usecs
calling  leds-gpio+ @ 1298, parent: platform
call leds-gpio+ returned 0 after 1 usecs
calling  1-0065+ @ 1298, parent: i2c-1
call 1-0065+ returned 0 after 1 usecs
calling  1-0073+ @ 1298, parent: i2c-1
call 1-0073+ returned 0 after 1 usecs
calling  nop_usb_xceiv.0+ @ 1298, parent: platform
call nop_usb_xceiv.0+ returned 0 after 1 usecs
calling  davinci_mdio.0+ @ 1298, parent: platform
call davinci_mdio.0+ returned 0 after 19 usecs
calling  davinci_emac.1+ @ 1298, parent: platform
davinci_mdio davinci_mdio.0: resetting idled controller
net eth0: attached PHY driver [SMSC LAN8710/LAN8720] (mii_bus:phy_addr=davinci_mdio-0:00, id=7c0f1)
call davinci_emac.1+ returned 0 after 2916 usecs
calling  alarmtimer+ @ 1298, parent: platform
call alarmtimer+ returned 0 after 3 usecs
calling  serial8250+ @ 1298, parent: platform
call serial8250+ returned 0 after 5 usecs
call usb1+ returned 0 after 99428 usecs
ata1: SATA link down (SStatus 0 SControl 300)
call ata1+ returned 0 after 334731 usecs
calling  host0+ @ 7, parent: ata1
call host0+ returned 0 after 4 usecs
calling  spi1.0+ @ 1298, parent: spi1
call spi1.0+ returned 0 after 5 usecs
calling  mtd0+ @ 1298, parent: spi1.0
call mtd0+ returned 0 after 3 usecs
calling  mtd0ro+ @ 1298, parent: spi1.0
call mtd0ro+ returned 0 after 2 usecs
calling  mtd1+ @ 1298, parent: spi1.0
call mtd1+ returned 0 after 2 usecs
calling  mtd1ro+ @ 1298, parent: spi1.0
call mtd1ro+ returned 0 after 1 usecs
calling  mtd2+ @ 1298, parent: spi1.0
call mtd2+ returned 0 after 2 usecs
calling  mtd2ro+ @ 1298, parent: spi1.0
call mtd2ro+ returned 0 after 1 usecs
calling  mtd3+ @ 1298, parent: spi1.0
call mtd3+ returned 0 after 1 usecs
calling  mtd3ro+ @ 1298, parent: spi1.0
call mtd3ro+ returned 0 after 1 usecs
calling  mtd4+ @ 1298, parent: spi1.0
call mtd4+ returned 0 after 1 usecs
calling  mtd4ro+ @ 1298, parent: spi1.0
call mtd4ro+ returned 0 after 1 usecs
calling  mtd5+ @ 1298, parent: spi1.0
call mtd5+ returned 0 after 1 usecs
calling  mtd5ro+ @ 1298, parent: spi1.0
call mtd5ro+ returned 0 after 1 usecs
calling  davinci_mdio-0:00+ @ 1298, parent: davinci_mdio.0
call davinci_mdio-0:00+ returned 0 after 132 usecs
calling  input0+ @ 1298, parent: gpio-keys-polled.1
call input0+ returned 0 after 204 usecs
calling  input1+ @ 1298, parent: 1-0048
call input1+ returned 0 after 4 usecs
calling  rtc0+ @ 1298, parent: omap_rtc
call rtc0+ returned 0 after 61 usecs
calling  snd-soc-dummy+ @ 1298, parent: platform
call snd-soc-dummy+ returned 0 after 3 usecs
calling  soc-audio.0+ @ 1298, parent: platform
call soc-audio.0+ returned 0 after 16 usecs
calling  mmc0:e624+ @ 1298, parent: mmc0
call mmc0:e624+ returned 0 after 100 usecs
PM: resume of devices complete after 636.285 msecs
Restarting tasks ... done.
root@arago:~# PHY: davinci_mdio-0:00 - Link is Up - 100/Full

ALSA SoC Audio Driver[edit]

Abstract

This chapter provides details on ALSA SoC audio driver along with CPU load numbers.

Introduction[edit]

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:

Audio.png

Driver Features[edit]

  1. The driver supports the following features:
  2. Supports 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[edit]

  1. Does NOT support OSS based applications using OSS emulation layer.
  2. Driver will not work if built as module.

Constraints[edit]

  • 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[edit]

Refer ALSA project - the C library reference [1] for API calls.

Performance and Benchmarks[edit]

The performance numbers were captured using the following:

  • Word length in bits = 16
  • Number of channels per sample = 2


Audio Write Performance
Sampling Rate (in Hz) CPU Load (in %)
300 MHz 456 MHz
8000 1.46
1.20
44100 8.17 6.00
48000 8.68
6.62


Audio Read Performance
Sampling Rate (in Hz) CPU Load (in %)
300 MHz 456 MHz
8000 4.13
1.24
44100 8.50
6.56
48000 8.22
7.08


Ethernet Driver[edit]

Abstract

This chapter provides details on Ethernet driver along with throughput and CPU load numbers.

Introduction[edit]

The Ethernet driver supports the Linux netdev interface.

Ethernet.png

Driver Features[edit]

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
  7. Support for MII and RMII interfaces to PHY

Supported System Calls[edit]

Supports the socket() and related system calls in accordance with Linux architecture.

Performance and Benchmarks[edit]

Ethernet 100Mbps Mode Performance
TCP Window Size(in KBytes) Interval (in Seconds) Transfer Rate MII PHY (in Mbps) Transfer Rate RMII PHY (in Mbps)
300 MHz 456 MHz 300 MHz 456 MHz
16 60 39.5 48.9 43 51.7
32 60 44.9 53.3 49.1 56.8
64 60 44.2 52.6 48.1 55.8
128 60 44.2 52.5 48.9 55.9


NOTE
RMII PHY support is available only on DA850/OMAPL138/AM18x.
CPU load during the performance test is 88%

The performance numbers were captured using the iperf tool. Usage details are mentioned below:

  • Server side command switch : "-s"
  • Client side command : "-c <server ip> -w <window size> -d -t60". This starts bi-directional traffic to the server for a duration of 60 seconds.
  • Iperf tool is run on the DUT1 in server mode and on DUT2 in client mode. Version 2.0.4 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


Graphical LCD (GLCD) Driver (DA850/OMAP-L138/AM18x)[edit]

Abstract

This chapter describes the GLCD driver architecture, driver features and performance numbers (throughput and CPU load).

Introduction[edit]

GLCD driver is based on Fbdev framework.


GLCD Driver.jpg

Driver Features[edit]

  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[edit]

  1. Brightness and color control ioctls not supported.

Supported System Calls[edit]

open(), close(), read(), mmap(), ioctl()

NAND Driver[edit]

Abstract

This chapter describes the NAND flash driver architecture, driver features and performance numbers (throughput and CPU load).

Introduction[edit]

The NAND driver is implemented as a character and block driver, compliant with the Linux MTD subsystem interface. It supports various NAND Flash chips (see file drivers/mtd/nand/nand_ids.h in Linux kernel sources) The NAND driver creates the device nodes for user space access (/dev/mtdblock0, /dev/mtdblock1, /dev/mtd0,/dev/mtd1 and so on.).

This figure illustrates the stack diagram of NAND flash driver in Linux.

Nand Driver.png

Driver Features[edit]

The driver supports the following features:

  1. JFFS2 and UBIFS file system support
  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[edit]

  1. flash_eraseall with -j option fails. Please use without -j option

Supported System Calls[edit]

Supports the system call support proivided by Linux MTD interface viz. open(), close(), read(), write(), ioctl()

Performance Benchmarks[edit]

NAND Write performance values
Buffer Size (in KBytes) Total Bytes Transferred (in MBytes) Transfer Rate (in MBytes/sec) CPU Load (in %)
300 MHz 456 MHz 300 MHz 456 MHz
100 100 0.25 0.34 100 100
256 100 0.25 0.34 100 100
512 100 0.25 0.34 100 100
1024 100 0.25 0.34 100 100
5120 100 0.25 0.34 100 100


NAND Read performance values
Buffer Size (in KBytes) Total Bytes Transferred (in MBytes) Transfer Rate (in MBytes/sec) CPU Load (in %)
300 MHz 456 MHz 300 MHz 456 MHz
100 100 2.88 3.35 100 100
256 100 2.87 3.37 100 100
512 100 2.89 3.37 100 100
1024 100 2.81 3.37 100 100
5120 100 2.85 3.36 100 100


The performance numbers are captured using the following:

  1. NAND PART Number: Micron MT29F4G08AAC
  2. File System = JFFS2
  3. NAND partition was mounted with async option.


NOR flash Driver[edit]

Abstract

This chapter describes the NOR flash driver architecture, driver features and performance numbers (throughput and CPU load).

Introduction[edit]

The NOR flash driver is implemented as a character and block device driver, compliant with the Linux MTD subsystem architecture. It supports various CFI compliant NOR flash chips. The NOR flash driver creates the device nodes for user space access (/dev/mtdblock0, /dev/mtdblock1, /dev/mtd0,/dev/mtd1 and so on.).

Driver Features[edit]

The driver supports the following features:

  1. JFFS2 file system support
  2. Supports Read, Write and Erase
  3. Polled mode of transfer

Supported System Calls[edit]

Supports the system call support proivided by Linux MTD interface viz. open(), close(), read(), write(), ioctl()

Performance Benchmarks[edit]

NOR Write performance values
Buffer Size (in KBytes) Total Bytes Transferred (in MBytes) Transfer Rate (in MBytes/sec) CPU Load (in %)
300 MHz 456 MHz 300 MHz 456 MHz
100 3
0.07 0.07 79.32 74.55
256 3
0.07 0.07 77.62 73.56
512 3
0.07 0.07 82.15 74.24
1024 3
0.07 0.07 80.47 73.6


NOR Read performance values
Buffer Size (in KBytes) Total Bytes Transferred (in MBytes) Transfer Rate (in MBytes/sec) CPU Load (in %)
300 MHz 456 MHz 300 MHz 456 MHz
100 3
0.76 0.93 100 100
256 3
0.76 0.93 100 100
512 3
0.76 0.93 100 100
1024 3
0.76 0.92 100 100


NOTE
NOR driver support is available only on DA850/OMAPL138/AM18x.


The performance numbers are captured using the following:

  1. NOR PART Number: Intel PC28F640P30T85
  2. File System = JFFS2
  3. NOR partition was mounted with async option.


SPI Flash Driver[edit]

Abstract

This chapter describes the SPI flash driver architecture, driver features and performance numbers (throughput and CPU load).

Introduction[edit]

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 Driver.png

Driver Features[edit]

  • DMA and PIO modes are supported.

Supported System Calls[edit]

Supports the system call support proivided by MTD interface viz. open(), close(), read(), write(), ioctl()

Performance Benchmarks[edit]

Performance numbers will be provided later

MMC/SD Driver[edit]

Abstract

This chapter provides details on MMC/SD driver along with throughput and CPU load numbers.

Introduction[edit]

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.

Mmcsd Driver.png

Driver Features[edit]

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[edit]

  1. Support for 8-bit mode of operation.
  2. SDIO - WLAN support
  3. SPI mode of operation

Constraints[edit]

  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[edit]

open(),close(),read(),write()

Performance and Benchmarks[edit]

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.


The performance numbers were captured using class 10 SDHC Card (SanDisk, 8GB)

Performance using EXT2 file system[edit]

Write performance values
Buffer Size (in KBytes) Total Bytes Transferred (in MBytes) Transfer Rate (in MBytes/sec) CPU Load (in %)
300 MHz 456 MHz 300 MHz 456 MHz
100 100 7.71
8.40
74.60
64.02
256 100 7.94
8.36
77.53
67.25
512 100 8.05
8.46
77.01
69.19
1024 100 7.87
8.39
75.25
67.84
5120 100 7.86
8.35
7.87
66.38


Read performance values
Buffer Size (in KBytes) Total Bytes Transferred (in MBytes) Transfer Rate (in MBytes/sec) CPU Load (in %)
300 MHz 456 MHz 300 MHz 456 MHz
100 100 14.39
15.03
42.57
36.86
256 100 14.41
15.03
43.09
37.36
512 100 14.39
15.05
41.15
36.96
1024 100 14.41
15.04
41.95
37.07
5120 100 14.38
15.09
42.72
39.24


Performance using VFAT file system[edit]

Write performance values
Buffer Size (in KBytes) Total Bytes Transferred (in MBytes) Transfer Rate (in MBytes/sec) CPU Load (in %)
300 MHz 456 MHz 300 MHz 456 MHz
100 100 6.21 7.18
66.52 59.29
256 100 6.39
7.11
66.35
57.63
512 100 6.42
7.24
66.48
58.81
1024 100 6.39
7.12
66.47
57.7
5120 100 6.44
7.19
66.11
58.25


Read performance values
Buffer Size (in KBytes) Total Bytes Transferred (in MBytes) Transfer Rate (in MBytes/sec) CPU Load (in %)
300 MHz 456 MHz 300 MHz 456 MHz
100 100 13.78
14.54
41.96 40.62
256 100 13.83
14.54
42.74
39.84
512 100 13.89
14.54
44.28 38
1024 100 13.92
14.52
44.87
38.89
5120 100 13.84
14.49
46.09
40.35


UART Driver[edit]

Abstract

This chapter provides details on UART driver.

Introduction[edit]

The UART driver is implemented as a serial driver, and can be accessed from user space as /dev/ttyS2.

Uart Driver.png

Driver Features[edit]

The driver supports the following features:

  1. Only UART2 is physically available on EVM board

Supported System Calls[edit]

open(),close(),read(),write(),ioctl()

Supported IOCTLs[edit]

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)


I2C Driver[edit]

Abstract

This chapter provides details on I2C driver.

Introduction[edit]

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.png

Driver Features[edit]

The driver supports the following features:

  1. 7-bit addressing mode
  2. Fast mode
  3. Interrupt mode

Features Not Supported[edit]

  1. 7-bit and 10-bit addressing combined format is not supported
  2. DMA mode is not supported

Supported System Calls[edit]

open(),close(),read(),write(),ioctl()

Supported IOCTLs[edit]

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)


EDMA Driver[edit]

Abstract

This chapter provides details on EDMA driver along with throughput and CPU load numbers.

Introduction[edit]

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[edit]

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

Features Not Supported[edit]

  1. QDMA is not supported.
  2. Reservation of resources (channels and PaRAMs) for usage from DSP is not supported.


Watchdog(WDT) Driver[edit]

Abstract

This chapter provides details on Watchdog timer driver.

Introduction[edit]

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.

Wdt.png

Driver Features[edit]

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.

Constraints[edit]

  1. Once /dev/watchdog is opened, closing it doesn't disable the watchdog

Supported System Calls[edit]

open(), close(), write(), read()

Supported IOCTLs[edit]

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


USB Driver[edit]

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[edit]

Driver Features[edit]

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[edit]

All other classes not mentioned in the "Supported Features" section.

MUSB OTG controller[edit]

Description[edit]

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[edit]

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[edit]

  • OTG
  • Modular support for host/device mode.

USB Mass Storage Class Host Driver[edit]

Driver Features[edit]

The driver supports the following feature

  1. DMA mode
  2. PIO mode

Supported System Calls[edit]

open(), close(), read(), write(), ioctl()

Performance Benchmarks[edit]

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.


USB MSC (MUSB) Host mode DMA EXT2 File System Performance[edit]

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 %)
300 MHz 456 MHz 300 MHz 456 MHz
100 100 2.57 2.73 23.99 16.59
512 100 2.64 2.50 28.05 16.52
1024 100 2.53 2.48 20.64 17.47
5120 100 2.68 2.74 26.14 14.67


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 %)
300 MHz 456 MHz 300 MHz 456 MHz
100 100 8.13 8.73 61.44 46.06
512 100 8.12 8.73 60.12 46.85
1024 100 8.08 8.70 62.81 46.74
5120 100 7.99 8.72 64.59 48.19


The performance numbers are captured using the following.

  1. Using 2GB SD card via card reader
  2. Numbers are captured using LTP test "$/opt/ltp/runltp -P am180x-evm -f ddt/usbhost_perf_ext2"

USB MSC (MUSB) Host mode DMA VFAT File System Performance[edit]

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 %)
300 MHz 456 MHz 300 MHz 456 MHz
100 100 3.62 3.93 40.39 32.97
512 100 3.63 4.00 39.60 34.01
1024 100 3.75 4.01 40.22 32.89
5120 100 3.64 3.94 39.71 32.78


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 %)
300 MHz 456 MHz 300 MHz 456 MHz
100 100 8.14 8.73 65.30 55.23
512 100 8.90 8.71 64.76 51.26
1024 100 8.03 8.53 64.04 49.73
5120 100 8.03 8.68 65.73 53.06


The performance numbers are captured using the following.

  1. SD card via USB card reader.
  2. File format: VFAT
  3. Obtained performance numbers by running LTP script:"$/opt/ltp/runltp -P am180x-evm -f ddt/usbhost_perf_vfat"



USB Mass Storage Class Slave Driver[edit]

Description[edit]

This figure illustrates the stack diagram of the system with USB File Storage Gadget driver

USBSlaveStorage.PNG

Driver Features[edit]

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[edit]

  • Modular support

Performance Benchmarks[edit]

USB Slave-DMA Performance[edit]

USB Slave-DMA-Write Performance values
Bytes Transferred (MB) Number of files transferred Total Bytes transferred (MB)
Data Rate (MB/sec)
DA850/OMAP-L138/AM18x
300 MHz 456 MHz
51 1 51 11.98 12.93


USB Slave-DMA-Read Performance values
Bytes Transferred (MB) Number of files transferred Total Bytes transferred (MB)
Data Rate (MB/sec)
DA850/OMAP-L138/AM18x
300 MHz 456 MHz
51 1 51 13.24 15.12

The performance numbers are captured in DMA Mode using a file inside /dev/shm as storage gadget media exposing as removable media to Windows-XP over USB. The storage media is formatted using the FAT32 on Windows-XP.
Storage gadget media file is created using the command:

# dd if=/dev/zero of=/dev/shm/50M bs=1M count=50"

Insert the USB mass storage gadget with /dev/shm/50M as the backing storage:

# insmod g_mass_storage.ko file=/dev/shm/50M 


The performance numbers are captured using script on window

@echo Start time: %time%
copy f:\50M d:\
@echo Stop time: %time%

@echo Start time: %time%
copy d:\50M f:\50M
@echo Stop time: %time%

USB CDC/RNDIS Slave Driver[edit]

Description[edit]

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.

UsBSlaveEthenet.PNG

Driver Features[edit]

The driver supports the following feature

  1. DMA mode
  2. PIO mode
  3. 10/100 Mbps speed.

Supported System Calls[edit]

open(), close(), read(), write(), ioctl()

Performance Benchmarks[edit]

Performance benchmarks were collected using the Iperf tool and default options were used to collect the throughput numbers.

DA850/OMAP-L138[edit]

USB CDC-DMA Performance[edit]

USB CDC-DMA Performance values - Client
TCP Window Size(in KBytes) Interval (in Seconds) Bandwidth (Mbits/Sec)
300 MHz 456 MHz
16 10 23.38 42.8
32 10 22.81 42.8
64 10 21.14 42.7
128 10 20.92 42.9


USB RNDIS-DMA Performance[edit]

USB RNDIS-DMA Performance values - Client
TCP Window Size(in KBytes) Interval (in Seconds) Bandwidth (Mbits/Sec)
300 MHz 456 MHz
16 10 23.38 26.64
32 10 22.81 28.1
64 10 21.14 25.78
128 10 20.92 25.05


USB Human Interface Device (HID) Driver[edit]

Description[edit]

The event sub system creates /dev/input/event* devices with the help of mdev.

Driver Features[edit]

The driver supports the following feature

  1. DMA mode
  2. PIO mode
  3. USB Mouse and Keyboards that conform to the USB HID specifications

USB Isochronous Driver[edit]

Description[edit]

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[edit]

The driver supports the following feature

  1. DMA mode
  2. PIO mode
  3. Support for USB Audio and video class(UVC class)

USB OTG Driver[edit]

Description[edit]

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[edit]

The driver supports the following feature


SATA[edit]

Description[edit]

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[edit]

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
  • CD/DVD support

Performance Benchmarks[edit]

SATA - ext2 File System Performance[edit]

SATA - Write Performance values
Buffer Size (in KBytes) Total Bytes Transferred (in MBytes) Transfer Rate (in MBytes/sec) CPU Load (in %)
300 MHz 456 MHz 300 MHz 456 MHz
100 1000 17.81 22.85 99.81 99.76 
512 1000 17.97 23.23 99.81
99.71
1024 1000 18.10 23.32 99.72
99.55
5120 1000 17.96 23.34 99.78
99.71


SATA - Read Performance values
Buffer Size (in KBytes) Total Bytes Transferred (in MBytes) Transfer Rate (in MBytes/sec) CPU Load (in %)
300 MHz 456 MHz 300 MHz 456 MHz
100 1000 31.14 37.96 99.64 99.46
512 1000 31.31
38.16 99.58 99.49
1024 1000 31.31
38.23 99.64
99.53
5120 1000 31.10 38.03 99.55
99.45


The performance numbers are captured using the following.

  1. SATA HDD - Seagate Baracuda 7200 RPM 500GB drive
  2. Performance as reported by LTP $runltp -P am180x-evm -f ddt/sata_perf_ext2


Video Port Interface (VPIF)[edit]

Abstract

This chapter provides details on Video Port Interface (VPIF) used for video display and capture.

Description[edit]

This section describes the Video Port Interface (VPIF) is a Linux V4L2 driver. It uses v4l2-subdev interface to interact with the encoders and decoders. On DA850/OMAP-L138/AM1808 EVM, VPIF channel 0 and channel 1 are used for capture and channel 2 is used for display. Channel 0 takes in composite input and Channel 1 is for S-Video input. There are 2 TVP5146 decoders interfaced, one for each channel. Channel 2 is used for output. One ADV7343 encoder is connected to it and output is either Composite or S-Video depending on the output type chosen.

Driver Features[edit]

  1. Supports Composite Video input and output
  2. Supports S-Video input and output
  3. Supports V4L2 driver model for video planes
  4. Supports NTSC and PAL standards
  5. Supports SBGGR8 and NV16 color formats for capture and NV16 color format for display.
  6. Supports Raw Capture.

Driver Features Not Supported[edit]

  1. Framebuffer (fbdev) interface is not supported.
  2. VBI data on display and capture is not supported
  3. HD resolutions are not supported

Performance Benchmarks[edit]


Video Display Performance
Resolution Frame Rate CPU Load (in %)
300 MHz 456 MHz 300 MHz 456 MHz
NTSC(720x480) 30 30 9 7
PAL(720x574) 25 25 2 5


Video Capture Performance
Resolution Frame Rate CPU Load (in %)
300 MHz 456 MHz 300 MHz 456 MHz
NTSC(720x480) 30 30

PAL(720x574) 25 25 0 0

NOTE
The above performance numbers are based on application which does mmap buffer allocation mechanism.


eCAP[edit]

Description:[edit]

Enhanced Capture Module (eCAP) is used for speed measurements of rotating machinery, Sample Rate measurements of rotating machinery and Period and Duty Cycle measurements of pulse train signals. In PWM mode, eCAP can be configured to generate PWM Waveforms.

Driver Features:[edit]

1 .Supports Multiple Instances.
2. Provides control to the user through SYSFS interface.
3. Supports Wide range of Period and Duty cycle Control.

Constraint[edit]

eCAP driver belongs to the category of PWM drivers and hence the driver functions can be accessed only through the core PWM FrameWork.

eHRPWM[edit]

Description[edit]

Enhanced High-Resolution Pulse-Width Modulator (eHRPWM) is used to generate complex pulse width Waveforms with minimal CPU overhead or intervention.


Driver Features:
[edit]

1 .Supports Multiple Instances.
2. Provides control to the user through SYSFS interface.
3. Supports wide range of Period and Duty cycle Control.
4. Supports Trip Zone, Dead Band, PWM chopper, Event Trigger and High Resolution Features.

Constraint[edit]

eHRPWM driver belongs to the category of PWM drivers and hence the basic PWM driver functions can be accessed only through the core PWM FrameWork. Advanced features have been exported for  global access.


E2e.jpg {{
  1. switchcategory:MultiCore=
  • For technical support on MultiCore devices, please post your questions in the C6000 MultiCore Forum
  • For questions related to the BIOS MultiCore SDK (MCSDK), please use the BIOS Forum

Please post only comments related to the article DaVinci PSP 03.22.00.02 Device Driver Features and Performance Guide here.

Keystone=
  • For technical support on MultiCore devices, please post your questions in the C6000 MultiCore Forum
  • For questions related to the BIOS MultiCore SDK (MCSDK), please use the BIOS Forum

Please post only comments related to the article DaVinci PSP 03.22.00.02 Device Driver Features and Performance Guide here.

C2000=For technical support on the C2000 please post your questions on The C2000 Forum. Please post only comments about the article DaVinci PSP 03.22.00.02 Device Driver Features and Performance Guide here. DaVinci=For technical support on DaVincoplease post your questions on The DaVinci Forum. Please post only comments about the article DaVinci PSP 03.22.00.02 Device Driver Features and Performance Guide here. MSP430=For technical support on MSP430 please post your questions on The MSP430 Forum. Please post only comments about the article DaVinci PSP 03.22.00.02 Device Driver Features and Performance Guide here. OMAP35x=For technical support on OMAP please post your questions on The OMAP Forum. Please post only comments about the article DaVinci PSP 03.22.00.02 Device Driver Features and Performance Guide here. OMAPL1=For technical support on OMAP please post your questions on The OMAP Forum. Please post only comments about the article DaVinci PSP 03.22.00.02 Device Driver Features and Performance Guide here. MAVRK=For technical support on MAVRK please post your questions on The MAVRK Toolbox Forum. Please post only comments about the article DaVinci PSP 03.22.00.02 Device Driver Features and Performance Guide here. For technical support please post your questions at http://e2e.ti.com. Please post only comments about the article DaVinci PSP 03.22.00.02 Device Driver Features and Performance Guide here.

}}

Hyperlink blue.png Links

Amplifiers & Linear
Audio
Broadband RF/IF & Digital Radio
Clocks & Timers
Data Converters

DLP & MEMS
High-Reliability
Interface
Logic
Power Management

Processors

Switches & Multiplexers
Temperature Sensors & Control ICs
Wireless Connectivity