详解ARM的AMBA设备中的DMA设备PL08X的Linux驱动

版本:v1.1

Crifan Li

摘要

本文主要分析了Linux的DMA驱动中ARM的PL08X的实现细节,几乎详细分析了每一个函数的主体代码,同时介绍了DMA的基本概念和工作原理。

[提示] 本文提供多种格式供:
在线阅读 HTML HTMLs PDF CHM TXT RTF WEBHELP
下载(7zip压缩包) HTML HTMLs PDF CHM TXT RTF WEBHELP

HTML版本的在线地址为:

http://www.crifan.com/files/doc/docbook/dma_pl08x_analysis/release/html/dma_pl08x_analysis.html

有任何意见,建议,提交bug等,都欢迎去讨论组发帖讨论:

http://www.crifan.com/bbs/categories/dma_pl08x_analysis/

2012-09-01

修订历史
修订 1.0 2010-04-23 crl
  1. 详解ARM的AMBA设备中的DMA设备PL08X的Linux驱动
修订 1.1 2012-09-01 crl
  1. 通过Docbook发布

目录

正文之前
1. 此文目的
2. 适合读者
3. 声明
1. ARM的PL08X的代码的详细解析 第一部分
1.1. PL08X Documentation
1.2. DMA简述
1.2.1. 什么是DMA
1.2.2. DMA的一些基础概念
1.3. PL08X asynchronous transfer
1.4. PL08X Memory to peripheral transfer
1.5. PL08X dma_device
1.6. PL08X _cctl_data _cctl
1.7. PL08X _lli _chan_lli pl08x_driver_data
1.8. PL08X macros
1.9. pl08x_decode_widthbits
1.10. pl08x_encode_width
1.11. pl08x_choose_master_bus
1.12. pl08x_fill_lli_for_desc
1.13. pl08x_pre_boundary
2. ARM的PL08X的代码的详细解析 第二部分
2.1. fill_LLIS_for_desc
2.2. pl08x_set_cregs
2.3. pl08x_memrelease
2.4. pl08x_disable_dmac_chan
2.5. pl08x_enable_dmac_chan
2.6. pl08x_dma_busy
2.7. pl08x_wqfunc
2.8. pl08x_amba_driver
2.9. pl08x_make_LLIs
2.10. pl08x_irq
2.11. pl08x_ensure_on
2.12. pl08x_dma_enumerate_channels
2.13. pl08x_probe
2.14. pl08x_init
3. ARM的PL08X的代码的详细解析 第三部分
3.1. 简述PL08X的DMA驱动的基本流程
3.2. pl08x_alloc_chan_resources
3.3. pl08x_free_chan_resources
3.4. pl08x_tx_submit
3.5. pl08x_prep_dma_memcpy
3.6. pl08x_prep_dma_interrupt
3.7. pl08x_dma_is_complete
3.8. pl08x_issue_pending
3.9. pl08x_prep_slave_sg
3.10. pl08x_terminate_all

插图清单

1.1. LLI寄存器的含义
1.2. Souce Transfer Width
1.3. Souce or Destination Transfer Width
1.4. LLI寄存器的含义
2.1. 配置寄存器的含义