Skip to content

Commit 76305e3

Browse files
committed
boardinfo: Add the EXPORT_SYMBOL_GPL for boardid and projectid.
Modify the time of gpio_get_value for all hardware pins. Change-Id: I8a6e57961b05ad0cf853a72e09369ea34bcc74b0
1 parent fa2559c commit 76305e3

File tree

2 files changed

+46
-69
lines changed

2 files changed

+46
-69
lines changed

drivers/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ obj-$(CONFIG_CONNECTOR) += connector/
6565
obj-$(CONFIG_FB_I810) += video/fbdev/i810/
6666
obj-$(CONFIG_FB_INTEL) += video/fbdev/intelfb/
6767

68+
obj-$(CONFIG_BOARDINFO) += boardinfo/
6869
obj-$(CONFIG_PARPORT) += parport/
6970
obj-$(CONFIG_NVM) += lightnvm/
7071
obj-y += base/ block/ mfd/ nfc/
@@ -183,4 +184,3 @@ obj-$(CONFIG_TEE) += tee/
183184
obj-$(CONFIG_RK_NAND) += rk_nand/
184185
obj-$(CONFIG_RK_HEADSET) += headset_observe/
185186
obj-$(CONFIG_RK_FLASH) += rkflash/
186-
obj-$(CONFIG_BOARDINFO) += boardinfo/

drivers/boardinfo/boardinfo.c

Lines changed: 45 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,7 @@
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

1412
static 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

2018
static 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

6650
static 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

11181
static 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

12687
static 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

14193
static 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

Comments
 (0)