Merge branch 'android-4.4'
[firefly-linux-kernel-4.4.55.git] / drivers / staging / android / ion / ion_priv.h
index df1cc860c3a0f1beffd4f174cb73b537749f4736..c80976622217f6468aa79ba3c5b0b6ad8e67e8ad 100644 (file)
@@ -26,6 +26,9 @@
 #include <linux/sched.h>
 #include <linux/shrinker.h>
 #include <linux/types.h>
+#ifdef CONFIG_ION_POOL_CACHE_POLICY
+#include <asm/cacheflush.h>
+#endif
 
 #include "ion.h"
 
@@ -419,6 +422,37 @@ struct ion_page_pool *ion_page_pool_create(gfp_t gfp_mask, unsigned int order);
 void ion_page_pool_destroy(struct ion_page_pool *);
 struct page *ion_page_pool_alloc(struct ion_page_pool *);
 void ion_page_pool_free(struct ion_page_pool *, struct page *);
+void ion_page_pool_free_immediate(struct ion_page_pool *, struct page *);
+
+#ifdef CONFIG_ION_POOL_CACHE_POLICY
+static inline void ion_page_pool_alloc_set_cache_policy
+                               (struct ion_page_pool *pool,
+                               struct page *page){
+       void *va = page_address(page);
+
+       if (va)
+               set_memory_wc((unsigned long)va, 1 << pool->order);
+}
+
+static inline void ion_page_pool_free_set_cache_policy
+                               (struct ion_page_pool *pool,
+                               struct page *page){
+       void *va = page_address(page);
+
+       if (va)
+               set_memory_wb((unsigned long)va, 1 << pool->order);
+
+}
+#else
+static inline void ion_page_pool_alloc_set_cache_policy
+                               (struct ion_page_pool *pool,
+                               struct page *page){ }
+
+static inline void ion_page_pool_free_set_cache_policy
+                               (struct ion_page_pool *pool,
+                               struct page *page){ }
+#endif
+
 
 /** ion_page_pool_shrink - shrinks the size of the memory cached in the pool
  * @pool:              the pool