21
21
#include <linux/fs.h>
22
22
#include <linux/of.h>
23
23
#include <linux/ctype.h>
24
+ #include <asm/io.h>
24
25
#include "htc_radio_smem.h"
25
26
#include <soc/qcom/smem.h>
26
27
27
28
#define DEVICE_TREE_RADIO_PATH "/chosen/radio"
28
29
29
- static void smem_init (struct htc_smem_type * smem )
30
- {
31
- int i = 0 ;
32
-
33
- smem -> version = 0 ;
34
- smem -> struct_size = 0 ;
35
- smem -> htc_smem_pid = 0 ;
36
- smem -> htc_smem_app_run_mode = 0 ;
37
- smem -> htc_smem_flag = 0 ;
38
- smem -> htc_smem_factory_reset = 0 ;
39
-
40
- for (i = 0 ; i < sizeof (smem -> htc_rom_ver ); i ++ )
41
- smem -> htc_rom_ver [i ] = 0 ;
42
-
43
- for (i = 0 ; i < sizeof (smem -> htc_smem_skuid ); i ++ )
44
- smem -> htc_smem_skuid [i ] = 0 ;
45
-
46
- for (i = 0 ; i < sizeof (smem -> reserved ); i ++ )
47
- smem -> reserved [i ] = 0 ;
48
- }
49
-
50
30
static int htc_radio_smem_probe (struct platform_device * pdev )
51
31
{
52
32
int ret = -1 ;
53
33
struct device_node * dnp ;
54
34
struct htc_smem_type * htc_radio_smem ;
35
+ u32 value ;
36
+ u8 buffer [max (sizeof (htc_radio_smem -> htc_rom_ver ),
37
+ sizeof (htc_radio_smem -> htc_smem_skuid ))];
55
38
56
39
pr_info ("[smem]%s: start.\n" , __func__ );
57
40
@@ -68,28 +51,37 @@ static int htc_radio_smem_probe(struct platform_device *pdev)
68
51
return ret ;
69
52
}
70
53
71
- /* set smem init 0 */
72
- smem_init (htc_radio_smem );
54
+ /* set smem to 0 */
55
+ memset_io (htc_radio_smem , 0 , sizeof ( * htc_radio_smem ) );
73
56
74
57
/* get smem data from radio data note */
75
58
dnp = of_find_node_by_path (DEVICE_TREE_RADIO_PATH );
76
59
if (dnp ) {
77
- htc_radio_smem -> version = HTC_RADIO_SMEM_VERSION ;
78
- htc_radio_smem -> struct_size = sizeof (struct htc_smem_type );
79
- of_property_read_u32 (dnp , "htc_smem_radio_dbg_flag" ,
80
- & htc_radio_smem -> htc_smem_flag );
81
- of_property_read_u32 (dnp , "htc_smem_app_run_mode" ,
82
- & htc_radio_smem -> htc_smem_app_run_mode );
83
- of_property_read_u32 (dnp , "htc_smem_pid" ,
84
- & htc_radio_smem -> htc_smem_pid );
85
- of_property_read_u32 (dnp , "htc_smem_factory_reset" ,
86
- & htc_radio_smem -> htc_smem_factory_reset );
87
- of_property_read_u8_array (dnp , "htc_rom_ver" ,
88
- & htc_radio_smem -> htc_rom_ver [0 ],
60
+ htc_smem_set_u32 (htc_radio_smem , version ,
61
+ HTC_RADIO_SMEM_VERSION );
62
+ htc_smem_set_u32 (htc_radio_smem , struct_size ,
63
+ sizeof (struct htc_smem_type ));
64
+
65
+ of_property_read_u32 (dnp , "htc_smem_radio_dbg_flag" , & value );
66
+ htc_smem_set_u32 (htc_radio_smem , htc_smem_flag , value );
67
+
68
+ of_property_read_u32 (dnp , "htc_smem_app_run_mode" , & value );
69
+ htc_smem_set_u32 (htc_radio_smem , htc_smem_app_run_mode , value );
70
+
71
+ of_property_read_u32 (dnp , "htc_smem_pid" , & value );
72
+ htc_smem_set_u32 (htc_radio_smem , htc_smem_pid , value );
73
+
74
+ of_property_read_u32 (dnp , "htc_smem_factory_reset" , & value );
75
+ htc_smem_set_u32 (htc_radio_smem , htc_smem_factory_reset ,
76
+ value );
77
+
78
+ of_property_read_u8_array (dnp , "htc_rom_ver" , buffer ,
89
79
sizeof (htc_radio_smem -> htc_rom_ver ));
90
- of_property_read_u8_array (dnp , "sku_id" ,
91
- & htc_radio_smem -> htc_smem_skuid [0 ],
80
+ htc_smem_copy (htc_radio_smem , htc_rom_ver , buffer );
81
+
82
+ of_property_read_u8_array (dnp , "sku_id" , buffer ,
92
83
sizeof (htc_radio_smem -> htc_smem_skuid ));
84
+ htc_smem_copy (htc_radio_smem , htc_smem_skuid , buffer );
93
85
} else
94
86
pr_err ("[smem]%s: cannot find path %s.\n" , __func__ ,
95
87
DEVICE_TREE_RADIO_PATH );
0 commit comments