13
13
*/
14
14
15
15
/*! \file */
16
+ #include <linux/mm.h>
17
+ #include <linux/slab.h>
18
+ #include <linux/vmalloc.h>
19
+
16
20
#include "ia_css.h"
17
21
#include "sh_css_hrt.h" /* only for file 2 MIPI */
18
22
#include "ia_css_buffer.h"
@@ -1679,15 +1683,8 @@ ia_css_load_firmware(const struct ia_css_env *env,
1679
1683
ia_css_debug_dtrace (IA_CSS_DEBUG_TRACE , "ia_css_load_firmware() enter\n" );
1680
1684
1681
1685
/* make sure we initialize my_css */
1682
- if ((my_css .malloc != env -> cpu_mem_env .alloc ) ||
1683
- (my_css .free != env -> cpu_mem_env .free ) ||
1684
- (my_css .flush != env -> cpu_mem_env .flush )
1685
- )
1686
- {
1686
+ if (my_css .flush != env -> cpu_mem_env .flush ) {
1687
1687
ia_css_reset_defaults (& my_css );
1688
-
1689
- my_css .malloc = env -> cpu_mem_env .alloc ;
1690
- my_css .free = env -> cpu_mem_env .free ;
1691
1688
my_css .flush = env -> cpu_mem_env .flush ;
1692
1689
}
1693
1690
@@ -1715,8 +1712,6 @@ ia_css_init(const struct ia_css_env *env,
1715
1712
ia_css_blctrl_cfg blctrl_cfg ;
1716
1713
#endif
1717
1714
1718
- void * (* malloc_func )(size_t size , bool zero_mem );
1719
- void (* free_func )(void * ptr );
1720
1715
void (* flush_func )(struct ia_css_acc_fw * fw );
1721
1716
hrt_data select , enable ;
1722
1717
@@ -1765,8 +1760,6 @@ ia_css_init(const struct ia_css_env *env,
1765
1760
1766
1761
IA_CSS_ENTER ("void" );
1767
1762
1768
- malloc_func = env -> cpu_mem_env .alloc ;
1769
- free_func = env -> cpu_mem_env .free ;
1770
1763
flush_func = env -> cpu_mem_env .flush ;
1771
1764
1772
1765
pipe_global_init ();
@@ -1786,16 +1779,9 @@ ia_css_init(const struct ia_css_env *env,
1786
1779
ia_css_save_mmu_base_addr (mmu_l1_base );
1787
1780
#endif
1788
1781
1789
- if (malloc_func == NULL || free_func == NULL ) {
1790
- IA_CSS_LEAVE_ERR (IA_CSS_ERR_INVALID_ARGUMENTS );
1791
- return IA_CSS_ERR_INVALID_ARGUMENTS ;
1792
- }
1793
-
1794
1782
ia_css_reset_defaults (& my_css );
1795
1783
1796
1784
my_css_save .driver_env = * env ;
1797
- my_css .malloc = malloc_func ;
1798
- my_css .free = free_func ;
1799
1785
my_css .flush = flush_func ;
1800
1786
1801
1787
err = ia_css_rmgr_init ();
@@ -2018,25 +2004,35 @@ ia_css_enable_isys_event_queue(bool enable)
2018
2004
void * sh_css_malloc (size_t size )
2019
2005
{
2020
2006
ia_css_debug_dtrace (IA_CSS_DEBUG_TRACE , "sh_css_malloc() enter: size=%d\n" ,size );
2021
- if (size > 0 && my_css .malloc )
2022
- return my_css .malloc (size , false);
2023
- return NULL ;
2007
+ /* FIXME: This first test can probably go away */
2008
+ if (size == 0 )
2009
+ return NULL ;
2010
+ if (size > PAGE_SIZE )
2011
+ return vmalloc (size );
2012
+ return kmalloc (size , GFP_KERNEL );
2024
2013
}
2025
2014
2026
2015
void * sh_css_calloc (size_t N , size_t size )
2027
2016
{
2017
+ void * p ;
2018
+
2028
2019
ia_css_debug_dtrace (IA_CSS_DEBUG_TRACE , "sh_css_calloc() enter: N=%d, size=%d\n" ,N ,size );
2029
- if (size > 0 && my_css .malloc )
2030
- return my_css .malloc (N * size , true);
2020
+
2021
+ /* FIXME: this test can probably go away */
2022
+ if (size > 0 ) {
2023
+ p = sh_css_malloc (N * size );
2024
+ if (p )
2025
+ memset (p , 0 , size );
2026
+ }
2031
2027
return NULL ;
2032
2028
}
2033
2029
2034
2030
void sh_css_free (void * ptr )
2035
2031
{
2036
- IA_CSS_ENTER_PRIVATE ( " ptr = %p" , ptr );
2037
- if (ptr && my_css . free )
2038
- my_css . free ( ptr );
2039
- IA_CSS_LEAVE_PRIVATE ( "void" );
2032
+ if ( is_vmalloc_addr ( ptr ))
2033
+ vfree (ptr );
2034
+ else
2035
+ kfree ( ptr );
2040
2036
}
2041
2037
2042
2038
/* For Acceleration API: Flush FW (shared buffer pointer) arguments */
0 commit comments