77
88#define RK3288_GRF_GPIO2A_P 0x0150
99
10- static int hw_id0 , hw_id1 , hw_id2 ;
11- static int pid_id0 , pid_id1 , pid_id2 ;
12- static int ddr_id0 , ddr_id1 , ddr_id2 ;
10+ static int hwid = -1 , pid = -1 , ddrid = -1 ;
1311
1412static const struct of_device_id of_board_info_match [] = {
1513 { .compatible = "board-info" , },
@@ -19,22 +17,8 @@ MODULE_DEVICE_TABLE(of, of_board_info_match);
1917
2018static int ver_show (struct seq_file * m , void * v )
2119{
22- int hwid0 , hwid1 , hwid2 , pid0 , pid1 , pid2 ;
23- int hwid , pid ;
2420 char * boardver ;
2521
26- hwid0 = gpio_get_value (hw_id0 );
27- hwid1 = gpio_get_value (hw_id1 );
28- hwid2 = gpio_get_value (hw_id2 );
29-
30- hwid = (hwid2 << 2 ) + (hwid1 << 1 ) + hwid0 ;
31-
32- pid0 = gpio_get_value (pid_id0 );
33- pid1 = gpio_get_value (pid_id1 );
34- pid2 = gpio_get_value (pid_id2 );
35-
36- pid = (pid2 << 2 ) + (pid1 << 1 ) + pid0 ;
37-
3822 if (hwid == 0 ) {
3923 if (pid == 7 )
4024 boardver = "1.0" ;
@@ -65,22 +49,8 @@ static int ver_show(struct seq_file *m, void *v)
6549
6650static int info_show (struct seq_file * m , void * v )
6751{
68- int pid0 , pid1 , pid2 , hwid0 , hwid1 , hwid2 ;
69- int pid , hwid ;
7052 char * boardinfo ;
7153
72- pid0 = gpio_get_value (pid_id0 );
73- pid1 = gpio_get_value (pid_id1 );
74- pid2 = gpio_get_value (pid_id2 );
75-
76- pid = (pid2 << 2 ) + (pid1 << 1 ) + pid0 ;
77-
78- hwid0 = gpio_get_value (hw_id0 );
79- hwid1 = gpio_get_value (hw_id1 );
80- hwid2 = gpio_get_value (hw_id2 );
81-
82- hwid = (hwid2 << 2 ) + (hwid1 << 1 ) + hwid0 ;
83-
8454 if (pid == 0 ) {
8555 if (hwid < 3 )
8656 boardinfo = "Tinker Board S" ;
@@ -110,46 +80,20 @@ static int info_show(struct seq_file *m, void *v)
11080
11181static int bid_show (struct seq_file * m , void * v )
11282{
113- int id0 , id1 , id2 ;
114- int hwid = -1 ;
115-
116- id0 = gpio_get_value (hw_id0 );
117- id1 = gpio_get_value (hw_id1 );
118- id2 = gpio_get_value (hw_id2 );
119-
120- hwid = (id2 << 2 ) + (id1 << 1 ) + id0 ;
121-
12283 seq_printf (m , "%d\n" , hwid );
12384 return 0 ;
12485}
12586
12687static int pid_show (struct seq_file * m , void * v )
12788{
128- int id0 , id1 , id2 ;
129- int pid = -1 ;
130-
131- id0 = gpio_get_value (pid_id0 );
132- id1 = gpio_get_value (pid_id1 );
133- id2 = gpio_get_value (pid_id2 );
134-
135- pid = (id2 << 2 ) + (id1 << 1 ) + id0 ;
136-
13789 seq_printf (m , "%d\n" , pid );
13890 return 0 ;
13991}
14092
14193static int ddr_show (struct seq_file * m , void * v )
14294{
143- int id0 , id1 , id2 ;
144- int ddrid ;
14595 char * ddr ;
14696
147- id0 = gpio_get_value (ddr_id0 );
148- id1 = gpio_get_value (ddr_id1 );
149- id2 = gpio_get_value (ddr_id2 );
150-
151- ddrid = (id2 << 2 ) + (id1 << 1 ) + id0 ;
152-
15397 if (ddrid == 0 )
15498 ddr = "4GB" ;
15599 else if (ddrid == 2 )
@@ -224,6 +168,12 @@ static int board_info_probe(struct platform_device *pdev)
224168 int ret ;
225169 struct proc_dir_entry * file ;
226170
171+ int hw_id0 , hw_id1 , hw_id2 ;
172+ int pid_id0 , pid_id1 , pid_id2 ;
173+ int ddr_id0 , ddr_id1 , ddr_id2 ;
174+
175+ int id0 , id1 , id2 ;
176+
227177 void * regs ;
228178 /* Pull up GPIO2 A1 A2 A3*/
229179 regs = ioremap (0xff770000 , 64 * 1024 );
@@ -247,6 +197,7 @@ static int board_info_probe(struct platform_device *pdev)
247197 return ret ;
248198 }
249199 }
200+ id0 = gpio_get_value (hw_id0 );
250201
251202 hw_id1 = of_get_named_gpio (dev -> of_node , "hw-id1" , 0 );
252203 if (!gpio_is_valid (hw_id1 )) {
@@ -259,6 +210,7 @@ static int board_info_probe(struct platform_device *pdev)
259210 return ret ;
260211 }
261212 }
213+ id1 = gpio_get_value (hw_id1 );
262214
263215 hw_id2 = of_get_named_gpio (dev -> of_node , "hw-id2" , 0 );
264216 if (!gpio_is_valid (hw_id2 )) {
@@ -271,6 +223,9 @@ static int board_info_probe(struct platform_device *pdev)
271223 return ret ;
272224 }
273225 }
226+ id2 = gpio_get_value (hw_id2 );
227+
228+ hwid = (id2 << 2 ) + (id1 << 1 ) + id0 ;
274229
275230 pid_id0 = of_get_named_gpio (dev -> of_node , "pid-id0" , 0 );
276231 if (!gpio_is_valid (pid_id0 )) {
@@ -283,6 +238,7 @@ static int board_info_probe(struct platform_device *pdev)
283238 return ret ;
284239 }
285240 }
241+ id0 = gpio_get_value (pid_id0 );
286242
287243 pid_id1 = of_get_named_gpio (dev -> of_node , "pid-id1" , 0 );
288244 if (!gpio_is_valid (pid_id1 )) {
@@ -295,6 +251,7 @@ static int board_info_probe(struct platform_device *pdev)
295251 return ret ;
296252 }
297253 }
254+ id1 = gpio_get_value (pid_id1 );
298255
299256 pid_id2 = of_get_named_gpio (dev -> of_node , "pid-id2" , 0 );
300257 if (!gpio_is_valid (pid_id2 )) {
@@ -307,6 +264,9 @@ static int board_info_probe(struct platform_device *pdev)
307264 return ret ;
308265 }
309266 }
267+ id2 = gpio_get_value (pid_id2 );
268+
269+ pid = (id2 << 2 ) + (id1 << 1 ) + id0 ;
310270
311271 ddr_id0 = of_get_named_gpio (dev -> of_node , "ddr-id0" , 0 );
312272 if (!gpio_is_valid (ddr_id0 )) {
@@ -319,6 +279,7 @@ static int board_info_probe(struct platform_device *pdev)
319279 return ret ;
320280 }
321281 }
282+ id0 = gpio_get_value (ddr_id0 );
322283
323284 ddr_id1 = of_get_named_gpio (dev -> of_node , "ddr-id1" , 0 );
324285 if (!gpio_is_valid (ddr_id1 )) {
@@ -331,6 +292,7 @@ static int board_info_probe(struct platform_device *pdev)
331292 return ret ;
332293 }
333294 }
295+ id1 = gpio_get_value (ddr_id1 );
334296
335297 ddr_id2 = of_get_named_gpio (dev -> of_node , "ddr-id2" , 0 );
336298 if (!gpio_is_valid (ddr_id2 )) {
@@ -343,6 +305,21 @@ static int board_info_probe(struct platform_device *pdev)
343305 return ret ;
344306 }
345307 }
308+ id2 = gpio_get_value (ddr_id2 );
309+
310+ ddrid = (id2 << 2 ) + (id1 << 1 ) + id0 ;
311+
312+ gpio_free (hw_id0 );
313+ gpio_free (hw_id1 );
314+ gpio_free (hw_id2 );
315+
316+ gpio_free (pid_id0 );
317+ gpio_free (pid_id1 );
318+ gpio_free (pid_id2 );
319+
320+ gpio_free (ddr_id0 );
321+ gpio_free (ddr_id1 );
322+ gpio_free (ddr_id2 );
346323
347324 file = proc_create ("boardver" , 0444 , NULL , & boardver_ops );
348325 if (!file )
@@ -367,20 +344,20 @@ static int board_info_probe(struct platform_device *pdev)
367344 return 0 ;
368345}
369346
370- static int board_info_remove ( struct platform_device * pdev )
347+ int get_board_id ( void )
371348{
372- gpio_free (hw_id0 );
373- gpio_free (hw_id1 );
374- gpio_free (hw_id2 );
375-
376- gpio_free (pid_id0 );
377- gpio_free (pid_id1 );
378- gpio_free (pid_id2 );
349+ return hwid ;
350+ }
351+ EXPORT_SYMBOL_GPL (get_board_id );
379352
380- gpio_free (ddr_id0 );
381- gpio_free (ddr_id1 );
382- gpio_free (ddr_id2 );
353+ int get_project_id (void )
354+ {
355+ return pid ;
356+ }
357+ EXPORT_SYMBOL_GPL (get_project_id );
383358
359+ static int board_info_remove (struct platform_device * pdev )
360+ {
384361 return 0 ;
385362}
386363
0 commit comments