Skip to content

Commit fadca71

Browse files
committed
boardinfo: Add boardinfo/boardver to distinguish Tinker Board and R2.
Change-Id: Iaaf1a6e3afa802109464e29d8f417dc60c85b335 (cherry picked from commit 0c2015d94d7ef375b6d978b067917273de9cc8b3)
1 parent 5b3acff commit fadca71

1 file changed

Lines changed: 60 additions & 27 deletions

File tree

drivers/boardinfo/boardinfo.c

Lines changed: 60 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -19,24 +19,43 @@ MODULE_DEVICE_TABLE(of, of_board_info_match);
1919

2020
static int ver_show(struct seq_file *m, void *v)
2121
{
22-
int id0, id1, id2;
23-
int hwid;
22+
int hwid0, hwid1, hwid2, pid0, pid1, pid2;
23+
int hwid, pid;
2424
char *boardver;
2525

26-
id0 = gpio_get_value(hw_id0);
27-
id1 = gpio_get_value(hw_id1);
28-
id2 = gpio_get_value(hw_id2);
29-
30-
hwid = (id2 << 2) + (id1 << 1) + id0;
31-
32-
if (hwid == 0)
33-
boardver = "1.00";
34-
else if (hwid == 1)
35-
boardver = "1.01";
36-
else if (hwid == 2)
37-
boardver = "1.02";
38-
else if (hwid == 3)
39-
boardver = "1.03";
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+
38+
if (hwid == 0) {
39+
if (pid == 7)
40+
boardver = "1.0";
41+
else
42+
boardver = "0.99";
43+
} else if (hwid == 1) {
44+
if (pid == 7)
45+
boardver = "1.1";
46+
else
47+
boardver = "1.00";
48+
} else if (hwid == 2) {
49+
if (pid == 7)
50+
boardver = "1.2";
51+
else
52+
boardver = "1.01";
53+
} else if (hwid == 3)
54+
boardver = "2.00";
55+
else if (hwid == 4)
56+
boardver = "2.01A";
57+
else if (hwid == 5)
58+
boardver = "2.01B";
4059
else
4160
boardver = "unknown";
4261

@@ -46,28 +65,42 @@ static int ver_show(struct seq_file *m, void *v)
4665

4766
static int info_show(struct seq_file *m, void *v)
4867
{
49-
int id0, id1, id2;
50-
int pid;
68+
int pid0, pid1, pid2, hwid0, hwid1, hwid2;
69+
int pid, hwid;
5170
char *boardinfo;
5271

53-
id0 = gpio_get_value(pid_id0);
54-
id1 = gpio_get_value(pid_id1);
55-
id2 = gpio_get_value(pid_id2);
72+
pid0 = gpio_get_value(pid_id0);
73+
pid1 = gpio_get_value(pid_id1);
74+
pid2 = gpio_get_value(pid_id2);
5675

57-
pid = (id2 << 2) + (id1 << 1) + id0;
76+
pid = (pid2 << 2) + (pid1 << 1) + pid0;
5877

59-
if (pid == 0)
60-
boardinfo = "Tinker Board S";
61-
else if (pid == 1)
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+
84+
if (pid == 0) {
85+
if (hwid < 3)
86+
boardinfo = "Tinker Board S";
87+
else
88+
boardinfo = "Tinker Board S R2";
89+
} else if (pid == 1)
6290
boardinfo = "Tinker Board S/HV";
6391
else if (pid == 2)
6492
boardinfo = "Tinker Board S";
6593
else if (pid == 3)
66-
boardinfo = "Tinker Board R2";
94+
boardinfo = "Tinker Board (S) R2 SR";
6795
else if (pid == 4)
6896
boardinfo = "Tinker R/BR";
97+
else if (pid == 5)
98+
boardinfo = "Tinker R/BR";
6999
else if (pid == 7)
70-
boardinfo = "Tinker Board";
100+
if (hwid < 3)
101+
boardinfo = "Tinker Board";
102+
else
103+
boardinfo = "Tinker Board R2";
71104
else
72105
boardinfo = "unknown";
73106

0 commit comments

Comments
 (0)