详解linux dma驱动编写
作者:feixiaoxing 发布时间:2023-07-27 15:14:09
标签:linux,dma,驱动
linux下面的驱动虽然什么样的情形都有,但是dma驱动却并不少见。dma可以有很多的好处,其中最重要的功能就是能够帮助我们将数据搬来搬去,这个时候cpu就由时间去做别的事情了,提高了设备效率。
1、dma驱动在什么地方
drivers/dma
2、如何看s3c的dma驱动,先看Kconfig
config S3C24XX_DMAC
bool "Samsung S3C24XX DMA support"
depends on ARCH_S3C24XX || COMPILE_TEST
select DMA_ENGINE
select DMA_VIRTUAL_CHANNELS
help
Support for the Samsung S3C24XX DMA controller driver. The
DMA controller is having multiple DMA channels which can be
configured for different peripherals like audio, UART, SPI.
The DMA controller can transfer data from memory to peripheral,
periphal to memory, periphal to periphal and memory to memory.
3、发现s3c只依赖于S3C24XX_DMAC,这样可以接着看Makefile
obj-$(CONFIG_S3C24XX_DMAC) += s3c24xx-dma.o
4、确认驱动文件为s3c24xx-dma.c,了解基本结构
static struct platform_driver s3c24xx_dma_driver = {
.driver = {
.name = "s3c24xx-dma",
},
.id_table = s3c24xx_dma_driver_ids,
.probe = s3c24xx_dma_probe,
.remove = s3c24xx_dma_remove,
};
module_platform_driver(s3c24xx_dma_driver);
5、驱动为基本的platform driver,接着就可以了解probe函数了
/* Initialize memcpy engine */
dma_cap_set(DMA_MEMCPY, s3cdma->memcpy.cap_mask);
dma_cap_set(DMA_PRIVATE, s3cdma->memcpy.cap_mask);
s3cdma->memcpy.dev = &pdev->dev;
s3cdma->memcpy.device_free_chan_resources =
s3c24xx_dma_free_chan_resources;
s3cdma->memcpy.device_prep_dma_memcpy = s3c24xx_dma_prep_memcpy;
s3cdma->memcpy.device_tx_status = s3c24xx_dma_tx_status;
s3cdma->memcpy.device_issue_pending = s3c24xx_dma_issue_pending;
s3cdma->memcpy.device_config = s3c24xx_dma_set_runtime_config;
s3cdma->memcpy.device_terminate_all = s3c24xx_dma_terminate_all;
s3cdma->memcpy.device_synchronize = s3c24xx_dma_synchronize;
/* Initialize slave engine for SoC internal dedicated peripherals */
dma_cap_set(DMA_SLAVE, s3cdma->slave.cap_mask);
dma_cap_set(DMA_CYCLIC, s3cdma->slave.cap_mask);
dma_cap_set(DMA_PRIVATE, s3cdma->slave.cap_mask);
s3cdma->slave.dev = &pdev->dev;
s3cdma->slave.device_free_chan_resources =
s3c24xx_dma_free_chan_resources;
s3cdma->slave.device_tx_status = s3c24xx_dma_tx_status;
s3cdma->slave.device_issue_pending = s3c24xx_dma_issue_pending;
s3cdma->slave.device_prep_slave_sg = s3c24xx_dma_prep_slave_sg;
s3cdma->slave.device_prep_dma_cyclic = s3c24xx_dma_prep_dma_cyclic;
s3cdma->slave.device_config = s3c24xx_dma_set_runtime_config;
s3cdma->slave.device_terminate_all = s3c24xx_dma_terminate_all;
s3cdma->slave.device_synchronize = s3c24xx_dma_synchronize;
s3cdma->slave.filter.map = pdata->slave_map;
s3cdma->slave.filter.mapcnt = pdata->slavecnt;
s3cdma->slave.filter.fn = s3c24xx_dma_filter;
6、通过code获悉,s3cdma有master和slave两个engine,且部分接口共享。
只要完成dma接口的适配,dma就可以正常使用了。当然,前提是,两个engine要进行注册使用。
ret = dma_async_device_register(&s3cdma->memcpy);
if (ret) {
dev_warn(&pdev->dev,
"%s failed to register memcpy as an async device - %d\n",
__func__, ret);
goto err_memcpy_reg;
}
ret = dma_async_device_register(&s3cdma->slave);
if (ret) {
dev_warn(&pdev->dev,
"%s failed to register slave as an async device - %d\n",
__func__, ret);
goto err_slave_reg;
}
来源:https://blog.csdn.net/feixiaoxing/article/details/79873782


猜你喜欢
- 很多站长在谈论SEO的时候,都会不自觉得谈到一个网站发展的瓶颈问题,即如何把从搜索引擎来的用户留下。在大家都削尖了脑袋转进了seo后,现在把
- 融资15亿美元(仅次于google当年的17亿),市值257亿美元(当日涨幅192%,几乎等于“百度+腾讯”),市盈率309倍(百度200倍
- 网站怎样优化一、用户体验从用户的角度来分析,色彩需求、方便导航、网页大小、来达到用户体验提高。二、框架结构搜索引擎不支持框架结构与框架调用的
- 今天介绍下Godaddy主机用户应该如何压缩文件。随着托管账户内容的增加,压缩及archive文档的能力对简化账户维护及文档储存大有裨益。另
- 做一个中国站长,如果以下50个问题,你不知道,你会很吃亏的,也有可能你是一个倒霉的站长。五十个问题,有四十个你能做到,那你才是及格的站长,这
- 给程序和库添加版本号和库,有利于维护和升级。当然你可以在文件名上体现,比如有个程序叫 yun,文件名写为 yun_1.0.2,但这个需要每次
- 1、注册域名一定要在有信誉的注册商那里注册,空间也要选择好的空间,否则不是打不开,就是被挂马 说不定还会丢失源程序2、做站长,不一定要懂ht
- mod_pagespeed目前支持Apache和Nginx。Apache中简单的安装方法如下。安装完成之后,它会在yum里新建一个安装源,之
- 西游记里,唐三藏带领着孙悟空一行,历经17年九九八十一难终于从西天取得真经。回到长安时举国轰动,万人迎接!取得了重大成功。这些是大家都知道的
- Discuz!是个不错的玩意, X2已经算是很棒了,但毕竟还有很多不足的地方,比如X2调用活动主题时,会在内容输出的地方自动添加活动图片、参
- 每个人都喜欢好用的技巧,对吗?这里有55个用于搜索引擎优化的小技巧,甚至你的老妈用起来都易如反掌。哦,不是我的老妈,但你明白我的意思。这意味
- 曾引发网民热议的“网易老总丁磊养猪”一事,又有新消息!21日,记者独家从相关渠道获悉,网易将先期投资
- 到http://www.phpwind.com/download.php下载对应编码的安装包,里面有个upload,用里面的文件覆盖你原来的
- 虚拟机是非常方便的测试软件,我们可以用来做各种测试,不会对硬件造成伤害,为了能够更加方便的演示环境,便于做各种例子;而又能保证主机的快速运行
- 从10月7号开始到10月15日止,已经有8天了,网络上关于uucall断网事件的真相之争从来就没有停息过。根据专业人士的判断以及网友们的各种
- 核心提示:网站被挂马很头痛,站长心急如焚,不急站长哥们给您支招两招轻松搞定。网站被挂马很头痛,站长心急如焚,不急站长哥们给您支招两招轻松搞定
- 难得有如此凑巧的日子,真是百年一遇千年一遇的什么事都让我们这一代给撞上了。七夕越来越被渲染成中国的情人节,2.14情人节送花,七夕情人节也送
- 做GGad的先决条件,除了网站的质量与流量与外,我们还要学习的是GGad摆放的位置,这会直接影响到点击率。那GGad在网页广告位,我们如何有
- 通过对“大龄文艺女青年之歌”的成功炒作,使邵美女迅速走红。精准的多点切入为这次炒作奠定了良好的基础,准确把握受众心里更是这次营销成功的核心。
- 百度与Google两大搜索向来都是不同的,Google的搜索结果更客观点,而百度则更适合大众化用户,作为站长有必要了解他们的某些“特殊爱好”