video: rockchip: fb: update format define
[firefly-linux-kernel-4.4.55.git] / drivers / cmmb / cmmb_memory.c
index f476877b877e0703d7705fa1d96de7964b2de638..0e8c03d267988e6d346fd88448823ec7f42d6b87 100755 (executable)
@@ -3,7 +3,9 @@
 #include <linux/errno.h>\r
 #include <linux/workqueue.h>\r
 #include <asm/atomic.h>\r
-\r
+#include <linux/vmalloc.h> \r
+#include <linux/slab.h>
+
 #if 1\r
 #define DBGERR(x...)   printk(KERN_INFO x)\r
 #else\r
@@ -31,9 +33,9 @@ static int cmmbmemo_release(struct inode *inode, struct file *file)
        cmmb_memo->usr--;\r
     \r
        if(cmmb_memo->usr == 0){\r
-        kfree(cmmb_memo->video_buf);\r
-        kfree(cmmb_memo->audio_buf);\r
-        kfree(cmmb_memo->data_buf);\r
+        vfree(cmmb_memo->video_buf);\r
+        vfree(cmmb_memo->audio_buf);\r
+        vfree(cmmb_memo->data_buf);\r
                mutex_unlock(&cmmb_memo->mutex);\r
         DBG("[CMMB HW]:[memory]: enter cmmb av memory release free buffer\n");\r
        } else{\r
@@ -63,7 +65,8 @@ static int cmmbmemo_open(struct inode * inode, struct file * file)
         cmmbmemo->audio_buf = NULL;\r
         cmmbmemo->data_buf  = NULL;\r
 \r
-        cmmbmemo->video_buf = kmalloc(CMMB_VIDEO_BUFFER_SIZE+1, GFP_KERNEL);\r
+        //cmmbmemo->video_buf = vmalloc(CMMB_VIDEO_BUFFER_SIZE+1, GFP_KERNEL);\r
+       cmmbmemo->video_buf   = vmalloc(CMMB_VIDEO_BUFFER_SIZE+1);\r
 \r
         if (cmmbmemo->video_buf == NULL){\r
             ret = - ENOMEM;\r
@@ -71,15 +74,17 @@ static int cmmbmemo_open(struct inode * inode, struct file * file)
             goto kmalloc_fail;\r
         }\r
 \r
-        cmmbmemo->audio_buf = kmalloc(CMMB_AUDIO_BUFFER_SIZE+1, GFP_KERNEL);\r
-\r
+        //cmmbmemo->audio_buf = vmalloc(CMMB_AUDIO_BUFFER_SIZE+1, GFP_KERNEL);\r
+       cmmbmemo->audio_buf = vmalloc(CMMB_AUDIO_BUFFER_SIZE+1);\r
+       \r
+       \r
         if (cmmbmemo->audio_buf == NULL){\r
             ret = - ENOMEM;\r
             DBGERR("[CMMB HW]:[memory]:[err]: cmmb audio buffer malloc fail!!!\n");\r
             goto kmalloc_fail;\r
         }\r
 \r
-        cmmbmemo->data_buf = kmalloc(1, GFP_KERNEL);\r
+        cmmbmemo->data_buf = vmalloc(1);\r
 \r
         if (cmmbmemo->data_buf == NULL){\r
             ret = - ENOMEM;\r
@@ -100,9 +105,9 @@ static int cmmbmemo_open(struct inode * inode, struct file * file)
     return ret;\r
         \r
 kmalloc_fail:\r
-    kfree(cmmbmemo->video_buf);\r
-    kfree(cmmbmemo->audio_buf);\r
-    kfree(cmmbmemo->data_buf);\r
+    vfree(cmmbmemo->video_buf);\r
+    vfree(cmmbmemo->audio_buf);\r
+    vfree(cmmbmemo->data_buf);\r
     mutex_unlock(&cmmbmemo->mutex);    \r
     return ret;        \r
 }\r
@@ -252,30 +257,36 @@ static ssize_t cmmbmemo_write(struct file *file, char __user *buf, size_t count,
            ret = cmmb_ringbuffer_write(&cmmbmemo->buffer_Video, buf, count);\r
         }
         //cmmbmemo->w_datatype = CMMB_NULL_TYPE;\r
+#if 0\r
         spin_lock(cmmbmemo->buffer_Video.lock);\r
         cmmbmemo->buffer_Video.condition = 1;\r
         spin_unlock(cmmbmemo->buffer_Video.lock);\r
         wake_up_interruptible(&cmmbmemo->buffer_Video.queue);\r
+#endif\r
     }else if (cmmbmemo->w_datatype == CMMB_AUDIO_TYPE){\r
         free_A = cmmb_ringbuffer_free(&cmmbmemo->buffer_Audio);\r
         if (free_A >= count){\r
            ret = cmmb_ringbuffer_write(&cmmbmemo->buffer_Audio, buf, count);\r
         }\r
         //cmmbmemo->w_datatype = CMMB_NULL_TYPE;\r
+#if 0\r
         spin_lock(cmmbmemo->buffer_Audio.lock);\r
         cmmbmemo->buffer_Audio.condition = 1;\r
         spin_unlock(cmmbmemo->buffer_Audio.lock);\r
-        wake_up_interruptible(&cmmbmemo->buffer_Audio.queue);\r
+#endif\r
+        //wake_up_interruptible(&cmmbmemo->buffer_Audio.queue);\r
     }else if(cmmbmemo->w_datatype == CMMB_DATA_TYPE){\r
         free_D = cmmb_ringbuffer_free(&cmmbmemo->buffer_Data);\r
         if (free_D >= count){\r
            ret = cmmb_ringbuffer_write(&cmmbmemo->buffer_Data, buf, count);\r
         }\r
         //cmmbmemo->w_datatype = CMMB_NULL_TYPE;\r
+#if 0\r
         spin_lock(cmmbmemo->buffer_Data.lock);\r
         cmmbmemo->buffer_Data.condition = 1;\r
         spin_unlock(cmmbmemo->buffer_Data.lock);\r
-        wake_up_interruptible(&cmmbmemo->buffer_Data.queue);\r
+#endif\r
+        //wake_up_interruptible(&cmmbmemo->buffer_Data.queue);\r
     }\r
 \r
     return ret;\r
@@ -398,7 +409,7 @@ static long cmmbmemo_ioctl(struct file *file, unsigned int cmd, unsigned long ar
         break;\r
         \r
         case CMMB_GET_AUDIO_TYPE:{\r
-            return cmmbmemo->videotype;\r
+            return cmmbmemo->audiotype;\r
         }\r
         break;\r
         \r