+++ /dev/null
-#include <linux/module.h>\r
-#include <linux/dma-mapping.h>\r
-#include <linux/platform_device.h>\r
-#include <linux/irq.h>\r
-#include <linux/io.h>\r
-#include <linux/wait.h>\r
-#include <linux/sched.h>\r
-\r
-#include <mach/rk29_iomap.h>\r
-#include <mach/rk29-dma-pl330.h>\r
-#include <asm/uaccess.h>\r
-#include <asm/current.h>\r
-\r
-\r
-static DECLARE_WAIT_QUEUE_HEAD(wq);\r
-static int wq_condition = 0;\r
-\r
-static struct rk29_dma_client rk29_dma_Memcpy_client = {\r
- .name = "rk29-dma-memcpy",\r
-};\r
-\r
-\r
-struct Dma_MemToMem {\r
- int SrcAddr;\r
- int DstAddr;\r
- int MenSize;\r
-};\r
-\r
-\r
-static void rk29_dma_memcpy_callback(struct rk29_dma_chan *dma_ch, void *buf_id, int size, enum rk29_dma_buffresult result)\r
-{\r
- wq_condition = 1;\r
- wake_up_interruptible(&wq);\r
-}\r
-\r
-//int slecount = 0;\r
-static ssize_t Memcpy_Dma_read(struct device *device,struct device_attribute *attr, void *argv)\r
-{\r
-\r
- return 0;\r
-}\r
-\r
-static ssize_t Memcpy_Dma_write (struct device *device,struct device_attribute *attr, void *argv)//(struct device_driver *device, const char *argv,size_t count)\r
-{\r
- int dma_flag;\r
- u32 mcode_sbus;\r
- u32 mcode_dbus;\r
- int i;\r
- int rt;\r
- long usec1 = 0;\r
- // long usec2 = 0;\r
-\r
- struct Dma_MemToMem *DmaMemInfo = (struct Dma_MemToMem *)argv;\r
-\r
-\r
- dma_flag = rk29_dma_request(DMACH_DMAC0_MemToMem, &rk29_dma_Memcpy_client, NULL); \r
- dma_flag = DMACH_DMAC0_MemToMem;\r
-\r
- rt = rk29_dma_devconfig(dma_flag, RK29_DMASRC_MEMTOMEM, DmaMemInfo->SrcAddr);\r
- rt = rk29_dma_config(dma_flag, 8);\r
- rt = rk29_dma_set_buffdone_fn(dma_flag, rk29_dma_memcpy_callback);\r
- rt = rk29_dma_enqueue(dma_flag, NULL, DmaMemInfo->DstAddr, DmaMemInfo->MenSize);\r
- rt = rk29_dma_ctrl(dma_flag, RK29_DMAOP_START); \r
- wait_event_interruptible_timeout(wq, wq_condition, HZ/20);\r
- wq_condition = 0; \r
- return 0;\r
-}\r
-\r
-static DRIVER_ATTR(DmaMemcpy, S_IRUGO|S_IALLUGO, Memcpy_Dma_read, Memcpy_Dma_write);\r
-\r
-\r
-static int __init dma_memcpy_probe(struct platform_device *pdev)\r
-{\r
- int ret;\r
- \r
- ret = device_create_file(&pdev->dev, &driver_attr_DmaMemcpy);\r
- if(ret)\r
- {\r
- printk(">> fb1 dsp win0 info device_create_file err\n");\r
- ret = -EINVAL;\r
- }\r
- // printk(">>>>>>>>>>>>>>>>>>>>> dam_test_probe ok>>>>>>>>>>>>>>>>>>>>>>>>"); \r
- return 0;\r
-}\r
-\r
-static int dma_memcpy_remove(struct platform_device *pdev)\r
-{\r
- int ret;\r
- driver_remove_file(&pdev->dev, &driver_attr_DmaMemcpy);\r
- \r
- return 0;\r
-}\r
-\r
-static struct platform_driver dma_mempcy_driver = {\r
- .driver = {\r
- .name = "dma_memcpy",\r
- .owner = THIS_MODULE, \r
- },\r
- .probe = dma_memcpy_probe,\r
- .remove = dma_memcpy_remove,\r
-};\r
-\r
-\r
-static int __init dma_test_init(void)\r
-{\r
- return platform_driver_register(&dma_mempcy_driver);\r
-}\r
-\r
-static void __exit dma_test_exit(void)\r
-{\r
- platform_driver_unregister(&dma_mempcy_driver);\r
-}\r
-\r
-module_init(dma_test_init);\r
-module_exit(dma_test_exit);\r
-\r
-MODULE_DESCRIPTION("RK29 PL330 Dma Test Deiver");\r
-MODULE_LICENSE("GPL V2");\r
-MODULE_AUTHOR("ZhenFu Fang <fzf@rock-chips.com>");\r
-\r
-\r
-\r
-\r
--- /dev/null
+#include <linux/module.h>\r
+#include <linux/dma-mapping.h>\r
+#include <linux/platform_device.h>\r
+#include <linux/irq.h>\r
+#include <linux/io.h>\r
+#include <linux/wait.h>\r
+#include <linux/sched.h>\r
+\r
+#include <mach/rk29_iomap.h>\r
+#include <mach/rk29-dma-pl330.h>\r
+#include <asm/uaccess.h>\r
+#include <asm/current.h>\r
+\r
+\r
+static DECLARE_WAIT_QUEUE_HEAD(wq);\r
+static int wq_condition = 0;\r
+\r
+static struct rk29_dma_client rk29_dma_Memcpy_client = {\r
+ .name = "rk29-dma-memcpy",\r
+};\r
+\r
+\r
+struct Dma_MemToMem {\r
+ int SrcAddr;\r
+ int DstAddr;\r
+ int MenSize;\r
+};\r
+\r
+\r
+static void rk29_dma_memcpy_callback(struct rk29_dma_chan *dma_ch, void *buf_id, int size, enum rk29_dma_buffresult result)\r
+{\r
+ wq_condition = 1;\r
+ wake_up_interruptible(&wq);\r
+}\r
+\r
+//int slecount = 0;\r
+static ssize_t Memcpy_Dma_read(struct device *device,struct device_attribute *attr, void *argv)\r
+{\r
+\r
+ return 0;\r
+}\r
+\r
+static ssize_t Memcpy_Dma_write (struct device *device,struct device_attribute *attr, void *argv)//(struct device_driver *device, const char *argv,size_t count)\r
+{\r
+ int dma_flag;\r
+ u32 mcode_sbus;\r
+ u32 mcode_dbus;\r
+ int i;\r
+ int rt;\r
+ long usec1 = 0;\r
+ // long usec2 = 0;\r
+\r
+ struct Dma_MemToMem *DmaMemInfo = (struct Dma_MemToMem *)argv;\r
+\r
+\r
+ dma_flag = rk29_dma_request(DMACH_DMAC0_MemToMem, &rk29_dma_Memcpy_client, NULL); \r
+ dma_flag = DMACH_DMAC0_MemToMem;\r
+\r
+ rt = rk29_dma_devconfig(dma_flag, RK29_DMASRC_MEMTOMEM, DmaMemInfo->SrcAddr);\r
+ rt = rk29_dma_config(dma_flag, 8);\r
+ rt = rk29_dma_set_buffdone_fn(dma_flag, rk29_dma_memcpy_callback);\r
+ rt = rk29_dma_enqueue(dma_flag, NULL, DmaMemInfo->DstAddr, DmaMemInfo->MenSize);\r
+ rt = rk29_dma_ctrl(dma_flag, RK29_DMAOP_START); \r
+ wait_event_interruptible_timeout(wq, wq_condition, HZ/20);\r
+ wq_condition = 0; \r
+ return 0;\r
+}\r
+\r
+static DRIVER_ATTR(DmaMemcpy, S_IRUGO|S_IALLUGO, Memcpy_Dma_read, Memcpy_Dma_write);\r
+\r
+\r
+static int __init dma_memcpy_probe(struct platform_device *pdev)\r
+{\r
+ int ret;\r
+ \r
+ ret = device_create_file(&pdev->dev, &driver_attr_DmaMemcpy);\r
+ if(ret)\r
+ {\r
+ printk(">> fb1 dsp win0 info device_create_file err\n");\r
+ ret = -EINVAL;\r
+ }\r
+ // printk(">>>>>>>>>>>>>>>>>>>>> dam_test_probe ok>>>>>>>>>>>>>>>>>>>>>>>>"); \r
+ return 0;\r
+}\r
+\r
+static int dma_memcpy_remove(struct platform_device *pdev)\r
+{\r
+ int ret;\r
+ driver_remove_file(&pdev->dev, &driver_attr_DmaMemcpy);\r
+ \r
+ return 0;\r
+}\r
+\r
+static struct platform_driver dma_mempcy_driver = {\r
+ .driver = {\r
+ .name = "dma_memcpy",\r
+ .owner = THIS_MODULE, \r
+ },\r
+ .probe = dma_memcpy_probe,\r
+ .remove = dma_memcpy_remove,\r
+};\r
+\r
+\r
+static int __init dma_test_init(void)\r
+{\r
+ return platform_driver_register(&dma_mempcy_driver);\r
+}\r
+\r
+static void __exit dma_test_exit(void)\r
+{\r
+ platform_driver_unregister(&dma_mempcy_driver);\r
+}\r
+\r
+module_init(dma_test_init);\r
+module_exit(dma_test_exit);\r
+\r
+MODULE_DESCRIPTION("RK29 PL330 Dma Test Deiver");\r
+MODULE_LICENSE("GPL V2");\r
+MODULE_AUTHOR("ZhenFu Fang <fzf@rock-chips.com>");\r
+\r
+\r
+\r
+\r