mirror of
https://github.com/home-assistant/operating-system.git
synced 2025-08-21 19:09:19 +00:00
Compare commits
608 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
80079db997 | ||
![]() |
3c5ba17b58 | ||
![]() |
925984c09f | ||
![]() |
ba8bda73fa | ||
![]() |
4a42d578fe | ||
![]() |
e98edce5d3 | ||
![]() |
42d4b5f2a2 | ||
![]() |
fdf7823887 | ||
![]() |
87319b6e29 | ||
![]() |
d284a1dee7 | ||
![]() |
a9c2eedc71 | ||
![]() |
bd52b7e97b | ||
![]() |
46ff688c20 | ||
![]() |
be584a8a00 | ||
![]() |
fd7d0253f3 | ||
![]() |
2114dd328f | ||
![]() |
e61246f5ba | ||
![]() |
2ac8222f19 | ||
![]() |
5bd466c27d | ||
![]() |
56baadc829 | ||
![]() |
91d2092938 | ||
![]() |
4310cfe916 | ||
![]() |
8994a59dfc | ||
![]() |
734323eb1e | ||
![]() |
cb495af05a | ||
![]() |
2e03490fe6 | ||
![]() |
f2106c6990 | ||
![]() |
2c20e5db3e | ||
![]() |
aaf2bf8317 | ||
![]() |
38b2eefe0d | ||
![]() |
4022d797d9 | ||
![]() |
7fba67cefe | ||
![]() |
feebc0abe9 | ||
![]() |
88aa4c7651 | ||
![]() |
d9ec603164 | ||
![]() |
afff68ca4d | ||
![]() |
dceba8bb43 | ||
![]() |
f0032a39f2 | ||
![]() |
66303c1078 | ||
![]() |
23e58009f2 | ||
![]() |
6b3440f4fd | ||
![]() |
31b9c46a79 | ||
![]() |
e8f487f96e | ||
![]() |
9bdd810e76 | ||
![]() |
99be958c4f | ||
![]() |
59d69209dc | ||
![]() |
1b7f9cd42f | ||
![]() |
a9ea934edc | ||
![]() |
f62fee2ff7 | ||
![]() |
616c406e8e | ||
![]() |
dde7a7b809 | ||
![]() |
829b5941e1 | ||
![]() |
4390fa7acd | ||
![]() |
62de5f53a8 | ||
![]() |
bf0aa61d87 | ||
![]() |
7ca62cb53a | ||
![]() |
cd87324452 | ||
![]() |
de21729578 | ||
![]() |
fc0f1e20d5 | ||
![]() |
22f5a83dcc | ||
![]() |
f509e9ce5d | ||
![]() |
381026758a | ||
![]() |
5a409ec0ec | ||
![]() |
d1cc7394b5 | ||
![]() |
b0bbe70315 | ||
![]() |
0f4016c180 | ||
![]() |
81b3bc8787 | ||
![]() |
061a6e9860 | ||
![]() |
c29f95678f | ||
![]() |
fed57ec5a3 | ||
![]() |
d9f463322b | ||
![]() |
6d75b47865 | ||
![]() |
feb045b32d | ||
![]() |
c1bd178021 | ||
![]() |
260a7c7d05 | ||
![]() |
5291fbf999 | ||
![]() |
a5949bbc0b | ||
![]() |
d17a739f48 | ||
![]() |
3c582190d6 | ||
![]() |
186107e089 | ||
![]() |
4399b28d2f | ||
![]() |
c1acccf30e | ||
![]() |
51b8836af0 | ||
![]() |
76d4485639 | ||
![]() |
abfee18363 | ||
![]() |
5d2154cc97 | ||
![]() |
24615739ea | ||
![]() |
55c9b54b13 | ||
![]() |
580e541f77 | ||
![]() |
7ed97e89a3 | ||
![]() |
1e94f9a79e | ||
![]() |
b7a7805262 | ||
![]() |
19a135edac | ||
![]() |
c99927f3c4 | ||
![]() |
f5be7693de | ||
![]() |
a4be500bf9 | ||
![]() |
cc0d4f8b62 | ||
![]() |
26c36a8caf | ||
![]() |
b5c9c9df22 | ||
![]() |
19616b05d7 | ||
![]() |
3f28023dc4 | ||
![]() |
2b34503524 | ||
![]() |
b1f6c3a87a | ||
![]() |
d065287acd | ||
![]() |
cb8b2e3f5f | ||
![]() |
1638097485 | ||
![]() |
b1c59f4f6e | ||
![]() |
5fd943c936 | ||
![]() |
e63aa1a5f4 | ||
![]() |
06a1c21b82 | ||
![]() |
8c1ff000f0 | ||
![]() |
8058392043 | ||
![]() |
6a8b69f793 | ||
![]() |
fe4468d789 | ||
![]() |
323cba6777 | ||
![]() |
ff07728fa3 | ||
![]() |
e83e6f4712 | ||
![]() |
c7ec9468c0 | ||
![]() |
b72acfa648 | ||
![]() |
74fe7d4cb8 | ||
![]() |
ce566167f2 | ||
![]() |
b211c653c7 | ||
![]() |
53dcfd3134 | ||
![]() |
eed6302ad8 | ||
![]() |
e0e270df1a | ||
![]() |
f012f09d4f | ||
![]() |
e819f05927 | ||
![]() |
e916d9f93c | ||
![]() |
d8dfa88fb8 | ||
![]() |
565c473a75 | ||
![]() |
a19870947a | ||
![]() |
bdc319d3df | ||
![]() |
8d69f395c2 | ||
![]() |
8049dfb30c | ||
![]() |
a4edece719 | ||
![]() |
762f098c14 | ||
![]() |
693507aaca | ||
![]() |
b7bbb63a26 | ||
![]() |
631c0c5d53 | ||
![]() |
55568f597f | ||
![]() |
7592143322 | ||
![]() |
008fb3fb74 | ||
![]() |
a7c237f93d | ||
![]() |
3d42d3690b | ||
![]() |
1e7cd66165 | ||
![]() |
7d187405de | ||
![]() |
66d5957310 | ||
![]() |
7ca4e90885 | ||
![]() |
7d5ebfcd31 | ||
![]() |
5af4942607 | ||
![]() |
97dffedbcd | ||
![]() |
b6b8e3b1dc | ||
![]() |
33280dc4cd | ||
![]() |
0d31ddfa43 | ||
![]() |
6bc5c3e5d0 | ||
![]() |
9582183458 | ||
![]() |
57d7059dae | ||
![]() |
50749052ae | ||
![]() |
222cfff8b8 | ||
![]() |
a504869cbb | ||
![]() |
5bb42ff43c | ||
![]() |
cbce0f2a2e | ||
![]() |
6c3bcb708f | ||
![]() |
ac407a6679 | ||
![]() |
f47b371f23 | ||
![]() |
ecfb744fe7 | ||
![]() |
511169b31b | ||
![]() |
df167910e1 | ||
![]() |
965198e8a1 | ||
![]() |
c8f6c6c2b0 | ||
![]() |
99319542b9 | ||
![]() |
2c9ce139d4 | ||
![]() |
720390862a | ||
![]() |
be3afe8b68 | ||
![]() |
bdc9909117 | ||
![]() |
54fa9899eb | ||
![]() |
c58a568f64 | ||
![]() |
ad8ee5610d | ||
![]() |
1ef4d43d4e | ||
![]() |
d40fa3beea | ||
![]() |
b03482996f | ||
![]() |
0c6888cdd0 | ||
![]() |
269246c412 | ||
![]() |
6c79ce0f98 | ||
![]() |
166537bf00 | ||
![]() |
c2ac8b5763 | ||
![]() |
a538ac2c8a | ||
![]() |
e5933c4ed4 | ||
![]() |
94432dad88 | ||
![]() |
9c8172df40 | ||
![]() |
96a8ab17c1 | ||
![]() |
f6d639f2bf | ||
![]() |
44cca729f0 | ||
![]() |
f39ee8b863 | ||
![]() |
64d3cd88a1 | ||
![]() |
084636b6cf | ||
![]() |
f7c5154bda | ||
![]() |
9bf12a8648 | ||
![]() |
cfb68c5b39 | ||
![]() |
cceb5dcf39 | ||
![]() |
582ec82f83 | ||
![]() |
cb0fa11eeb | ||
![]() |
89c4d57b18 | ||
![]() |
a66f3380e3 | ||
![]() |
288f4a0082 | ||
![]() |
622cbb806d | ||
![]() |
5c8a0307fb | ||
![]() |
51e80cb7bc | ||
![]() |
9e921ed9ad | ||
![]() |
56730adf48 | ||
![]() |
22aa316483 | ||
![]() |
d60272b79a | ||
![]() |
068a57763c | ||
![]() |
6810659f9b | ||
![]() |
8020671ca6 | ||
![]() |
0f57b55b4c | ||
![]() |
c7909de767 | ||
![]() |
c1c6a6ce21 | ||
![]() |
111018b911 | ||
![]() |
40b4d5ca2e | ||
![]() |
25d1f5d7d1 | ||
![]() |
d6a86c29f9 | ||
![]() |
2d3119ef22 | ||
![]() |
9dd269d766 | ||
![]() |
3c6897e2cd | ||
![]() |
7afe867fd5 | ||
![]() |
779dc0bcb8 | ||
![]() |
70d6252eae | ||
![]() |
9ed200a70e | ||
![]() |
be2cfd7622 | ||
![]() |
367fc1561b | ||
![]() |
5ac85a4c45 | ||
![]() |
3d793dc7ef | ||
![]() |
b76d55283d | ||
![]() |
422bf2d1e1 | ||
![]() |
33e0ccb9ce | ||
![]() |
f86fcbd609 | ||
![]() |
99a4d4ea75 | ||
![]() |
0b1c349a8f | ||
![]() |
2a910b0e45 | ||
![]() |
05ba57e006 | ||
![]() |
56e0d941d0 | ||
![]() |
2d9540117f | ||
![]() |
5cae40c396 | ||
![]() |
ae0aeb84f5 | ||
![]() |
c9d091c1b3 | ||
![]() |
a52f7ae02c | ||
![]() |
366bb0e495 | ||
![]() |
aff28ce60e | ||
![]() |
40a705bbd3 | ||
![]() |
1e1d10570c | ||
![]() |
fe1083822d | ||
![]() |
b4710290b6 | ||
![]() |
bb7964ff02 | ||
![]() |
7f934b4470 | ||
![]() |
0eef6473ba | ||
![]() |
9c6cb6e1f0 | ||
![]() |
98ce2bec4a | ||
![]() |
1d6ab42f88 | ||
![]() |
dde7f1d073 | ||
![]() |
ef25289a6d | ||
![]() |
82db02756c | ||
![]() |
905aa21e8c | ||
![]() |
ab19c8c6cf | ||
![]() |
fdd8c246dd | ||
![]() |
23fb6b8dd3 | ||
![]() |
45abe203f5 | ||
![]() |
86cabd3d1a | ||
![]() |
8fe1d2ddbe | ||
![]() |
a15671a530 | ||
![]() |
6f512527aa | ||
![]() |
7e702a2ab2 | ||
![]() |
37d2f13e49 | ||
![]() |
0a2fdf47b3 | ||
![]() |
55f8704523 | ||
![]() |
19c03729f3 | ||
![]() |
66e5ea3b4b | ||
![]() |
28e3b109b7 | ||
![]() |
a5256fb2d0 | ||
![]() |
f358f322da | ||
![]() |
b77d633382 | ||
![]() |
cd022e6d5e | ||
![]() |
27e6aa60fd | ||
![]() |
dc795cfc51 | ||
![]() |
4d2229e50b | ||
![]() |
82a40de894 | ||
![]() |
5c17e0974b | ||
![]() |
9db5dc7ab8 | ||
![]() |
9ba4dd5524 | ||
![]() |
32b037af32 | ||
![]() |
c2c05312a0 | ||
![]() |
b91c432fa8 | ||
![]() |
023d0b27f5 | ||
![]() |
57ffd6444b | ||
![]() |
8bbc330407 | ||
![]() |
76853d1171 | ||
![]() |
0daf748c97 | ||
![]() |
8aabf65bb7 | ||
![]() |
825ef58f85 | ||
![]() |
614ff50394 | ||
![]() |
907857985a | ||
![]() |
846512a283 | ||
![]() |
e646650a7e | ||
![]() |
038f1b4bd6 | ||
![]() |
d7c09e15b9 | ||
![]() |
2c3c066ea0 | ||
![]() |
184eb9e048 | ||
![]() |
ce1f07126f | ||
![]() |
0188f24a0d | ||
![]() |
581de22a06 | ||
![]() |
9764273894 | ||
![]() |
cc53ad4fd6 | ||
![]() |
142e7df6cf | ||
![]() |
4d6991fd45 | ||
![]() |
98ab22c119 | ||
![]() |
381d2aa8f7 | ||
![]() |
594c24eab7 | ||
![]() |
be2a64f4d2 | ||
![]() |
51bd8bd0e5 | ||
![]() |
4fa3329d59 | ||
![]() |
7959113c97 | ||
![]() |
cd385be81f | ||
![]() |
8ed6bc2e31 | ||
![]() |
68e63d15e5 | ||
![]() |
89c31bb967 | ||
![]() |
e3120df5d0 | ||
![]() |
59b687f0db | ||
![]() |
cee0123105 | ||
![]() |
22aede0278 | ||
![]() |
dadc82ae37 | ||
![]() |
26af1dd907 | ||
![]() |
c515dd19f2 | ||
![]() |
a39b8576e8 | ||
![]() |
a4d8e8492f | ||
![]() |
323f415fa8 | ||
![]() |
4255425b93 | ||
![]() |
7c70e3ef84 | ||
![]() |
d42f80c65e | ||
![]() |
c3cc81249b | ||
![]() |
d8273af0ad | ||
![]() |
a6bdf2c1c9 | ||
![]() |
14bb885ce9 | ||
![]() |
e5eefc9978 | ||
![]() |
6001c34091 | ||
![]() |
17d0cdf823 | ||
![]() |
8aceb287de | ||
![]() |
e42835f163 | ||
![]() |
1a8f9ca2e3 | ||
![]() |
162084082e | ||
![]() |
c2098e1cf4 | ||
![]() |
22c668b500 | ||
![]() |
6672046b6f | ||
![]() |
78b456d05c | ||
![]() |
2cc78abe56 | ||
![]() |
46bb12844f | ||
![]() |
1537d02408 | ||
![]() |
a66591166f | ||
![]() |
7443c45001 | ||
![]() |
a4f5670cd8 | ||
![]() |
c9c5f1b3e9 | ||
![]() |
b4c9f2fce2 | ||
![]() |
c48184cf91 | ||
![]() |
681fe1421a | ||
![]() |
acc293b662 | ||
![]() |
3a67e2e8c4 | ||
![]() |
8682d8af78 | ||
![]() |
b82707ff9a | ||
![]() |
525dcfedfb | ||
![]() |
18cc261e35 | ||
![]() |
bda9c3d715 | ||
![]() |
4cbbeeb7dc | ||
![]() |
beaad9ac9b | ||
![]() |
bf1eaf44d5 | ||
![]() |
c94f7933ef | ||
![]() |
01475a8c45 | ||
![]() |
9436661958 | ||
![]() |
e88ae15272 | ||
![]() |
1fa53bc3dc | ||
![]() |
1a6dcbbf5b | ||
![]() |
4be3dee0b4 | ||
![]() |
5756969be9 | ||
![]() |
8442d2ccfa | ||
![]() |
300986f129 | ||
![]() |
08cbbe8988 | ||
![]() |
827c97f0ca | ||
![]() |
3f5b28a0b4 | ||
![]() |
7c25f7c187 | ||
![]() |
52e21c9ccf | ||
![]() |
8d448a130c | ||
![]() |
39debca9fc | ||
![]() |
29e92f4231 | ||
![]() |
0797bccc36 | ||
![]() |
e8c2bacae6 | ||
![]() |
80f02b8ab6 | ||
![]() |
a0871be6c0 | ||
![]() |
25a0dd3082 | ||
![]() |
50d304d7f3 | ||
![]() |
021b2c0357 | ||
![]() |
f922c14f15 | ||
![]() |
92541b7280 | ||
![]() |
f5ff224358 | ||
![]() |
6bc6300149 | ||
![]() |
fe9fc1cbd2 | ||
![]() |
4f28a284be | ||
![]() |
094208492e | ||
![]() |
ce95fdccd3 | ||
![]() |
2c335a4dd9 | ||
![]() |
1a99d07cae | ||
![]() |
58d4b79376 | ||
![]() |
0b52271b3a | ||
![]() |
503117d8bf | ||
![]() |
c92b4b54be | ||
![]() |
5e44dcc681 | ||
![]() |
2d257bd671 | ||
![]() |
8ed04ed73c | ||
![]() |
737a6f18c3 | ||
![]() |
ac942b8ed9 | ||
![]() |
a8bad54efc | ||
![]() |
481a79eb28 | ||
![]() |
8cd7dfe822 | ||
![]() |
2416c6c26c | ||
![]() |
4eb0cd6460 | ||
![]() |
e43747c2e9 | ||
![]() |
5f8aeb1c6d | ||
![]() |
dcfb296dcf | ||
![]() |
fdcb94f0d8 | ||
![]() |
5f0a8fe627 | ||
![]() |
0495ba25ad | ||
![]() |
fa242e32d7 | ||
![]() |
fc3b098170 | ||
![]() |
2b0fff31a3 | ||
![]() |
dade3adf80 | ||
![]() |
b4fad03613 | ||
![]() |
59b8636bc8 | ||
![]() |
3337cd0f79 | ||
![]() |
0c7cd8023e | ||
![]() |
502ef82b80 | ||
![]() |
1708ed11b4 | ||
![]() |
59b9d82a55 | ||
![]() |
39babd5368 | ||
![]() |
2595dd815b | ||
![]() |
d1577a6a65 | ||
![]() |
f219f239d8 | ||
![]() |
ebc93692f5 | ||
![]() |
3af31c2265 | ||
![]() |
f4f6908c80 | ||
![]() |
31fc13cf03 | ||
![]() |
ec1561661b | ||
![]() |
272430a58c | ||
![]() |
1537e14dfc | ||
![]() |
22f7777099 | ||
![]() |
813030bb4c | ||
![]() |
31bb38ffd4 | ||
![]() |
b6cfe04422 | ||
![]() |
0ae67991d1 | ||
![]() |
f892334077 | ||
![]() |
2e2f6e893b | ||
![]() |
a2a4cf8668 | ||
![]() |
b8cf3face0 | ||
![]() |
1c991c229d | ||
![]() |
a3c5e670ef | ||
![]() |
ffc75a5053 | ||
![]() |
4d6246be4d | ||
![]() |
c6a1e668f4 | ||
![]() |
b19f83d74d | ||
![]() |
a877e0c3dd | ||
![]() |
265cb08e79 | ||
![]() |
c473aca701 | ||
![]() |
f93f8e34b3 | ||
![]() |
fa53c7bc99 | ||
![]() |
1f4bd67f7e | ||
![]() |
0c427d0dee | ||
![]() |
701e4f78aa | ||
![]() |
cd5cb880ea | ||
![]() |
cf033ec49d | ||
![]() |
0ec506470a | ||
![]() |
606da02461 | ||
![]() |
e49f8fe630 | ||
![]() |
02836524ce | ||
![]() |
50176a0e3b | ||
![]() |
06e7ee7efb | ||
![]() |
e08bbd7047 | ||
![]() |
653bcbe3ae | ||
![]() |
3700516097 | ||
![]() |
3fe09a4e6a | ||
![]() |
2b8dc1c913 | ||
![]() |
9f7a846d6b | ||
![]() |
466225806e | ||
![]() |
8e42ad5536 | ||
![]() |
39e78a1014 | ||
![]() |
cc4a6ebf96 | ||
![]() |
4a3837374f | ||
![]() |
f70067c570 | ||
![]() |
24b6463fbb | ||
![]() |
78152db78f | ||
![]() |
985f3b8e3d | ||
![]() |
245dc7603f | ||
![]() |
53bbc43ff3 | ||
![]() |
ad6ac0a770 | ||
![]() |
de67752a46 | ||
![]() |
a5eb7ffc8e | ||
![]() |
b09e5b5688 | ||
![]() |
a4c65b3fd1 | ||
![]() |
ec6f7978b5 | ||
![]() |
c9033551f2 | ||
![]() |
375e688938 | ||
![]() |
9d6b3a1d0b | ||
![]() |
43e4bc81d3 | ||
![]() |
4bcba322ff | ||
![]() |
0991cc1c25 | ||
![]() |
83cbc37422 | ||
![]() |
0909462d51 | ||
![]() |
27fc2de146 | ||
![]() |
be7228c7e6 | ||
![]() |
e51b1bd9eb | ||
![]() |
2706b4d866 | ||
![]() |
83af2731a8 | ||
![]() |
f66fbda032 | ||
![]() |
d215e81fb1 | ||
![]() |
afe39c279b | ||
![]() |
ee13d1fb45 | ||
![]() |
917f022614 | ||
![]() |
fc68bce7d9 | ||
![]() |
0363ddab37 | ||
![]() |
f18345a6c4 | ||
![]() |
8b13cfd902 | ||
![]() |
16313059d9 | ||
![]() |
deb072cb76 | ||
![]() |
b206787520 | ||
![]() |
0db61e85b0 | ||
![]() |
c3fba76142 | ||
![]() |
7fc9c7d03b | ||
![]() |
70c41b5690 | ||
![]() |
68522d2062 | ||
![]() |
3bb6442117 | ||
![]() |
2b3e806e56 | ||
![]() |
a034fc9997 | ||
![]() |
4861cc58ce | ||
![]() |
3160b59730 | ||
![]() |
032af2f56d | ||
![]() |
035e3884d8 | ||
![]() |
ce3c80641b | ||
![]() |
4eda8a1ff3 | ||
![]() |
b410b70814 | ||
![]() |
eca72c9898 | ||
![]() |
71974edfd7 | ||
![]() |
613604ea74 | ||
![]() |
6c62029a74 | ||
![]() |
a5209dc400 | ||
![]() |
1118335b1c | ||
![]() |
f96163f04e | ||
![]() |
b0dbbf963c | ||
![]() |
a38bf6e75a | ||
![]() |
0d892dbf23 | ||
![]() |
a403b790f7 | ||
![]() |
43aa64bb86 | ||
![]() |
ba17e542c5 | ||
![]() |
73dedf35de | ||
![]() |
96c622b36f | ||
![]() |
698f2bb7d4 | ||
![]() |
be39da4855 | ||
![]() |
b14d0223c2 | ||
![]() |
fcfd951f2b | ||
![]() |
fcefb1e515 | ||
![]() |
3070b52a3e | ||
![]() |
37639fc3ff | ||
![]() |
770bcb62a0 | ||
![]() |
b3530d1ce1 | ||
![]() |
ba9d1bac1e | ||
![]() |
db184bf5d3 | ||
![]() |
15a80bb405 | ||
![]() |
f0b5be41fe | ||
![]() |
517abe0ea9 | ||
![]() |
ca90fa515d | ||
![]() |
6605b1511f | ||
![]() |
f8b24f4b70 | ||
![]() |
ada03f6736 | ||
![]() |
04e679798a | ||
![]() |
6a49aa1c2b | ||
![]() |
34b7bbd68d | ||
![]() |
c0d8e14c2a | ||
![]() |
c017b43456 | ||
![]() |
98f13d9282 | ||
![]() |
5ef1e83197 | ||
![]() |
4df2ab6013 | ||
![]() |
45c62716cb | ||
![]() |
48f3045854 | ||
![]() |
3281cbd365 | ||
![]() |
5a6678147e | ||
![]() |
0c2b5aff65 | ||
![]() |
9dca4fc837 | ||
![]() |
fff08c6101 | ||
![]() |
1022053aef | ||
![]() |
0629c58d31 | ||
![]() |
bc2afe33b0 | ||
![]() |
2c963fcd05 | ||
![]() |
d4a403b640 | ||
![]() |
89cb68f7b7 | ||
![]() |
c371e45144 | ||
![]() |
2e7e039899 | ||
![]() |
c6e01d3468 | ||
![]() |
5336e17a06 | ||
![]() |
a017fae49d | ||
![]() |
96d59c2a40 | ||
![]() |
1f23c3ac72 | ||
![]() |
3f26a61d9a | ||
![]() |
6a728d916f | ||
![]() |
7f0ab07752 |
@@ -3,5 +3,10 @@ buildroot/
|
|||||||
buildroot-external/
|
buildroot-external/
|
||||||
buildroot-patches/
|
buildroot-patches/
|
||||||
|
|
||||||
# Ignore too
|
# Output/Release directory gets created using build scripts
|
||||||
|
output*/
|
||||||
release/
|
release/
|
||||||
|
|
||||||
|
# Ignore hidden directories as well
|
||||||
|
.git/
|
||||||
|
.github/
|
||||||
|
32
.github/ISSUE_TEMPLATE.md
vendored
32
.github/ISSUE_TEMPLATE.md
vendored
@@ -1,32 +0,0 @@
|
|||||||
<!-- READ THIS FIRST:
|
|
||||||
- If you need additional help with this template please refer to https://www.home-assistant.io/help/reporting_issues/
|
|
||||||
- Make sure you are running the latest version before reporting an issue: https://github.com/home-assistant/home-assistant/releases
|
|
||||||
- Do not report issues for components here, plaese refer to https://github.com/home-assistant/home-assistant/issues
|
|
||||||
- This is for bugs only. Feature and enhancement requests should go in our community forum: https://community.home-assistant.io/c/feature-requests
|
|
||||||
- Provide as many details as possible. Paste logs, configuration sample and code into the backticks. Do not delete any text from this template!
|
|
||||||
- If you have a problem with a Add-on, make a issue on there repository.
|
|
||||||
-->
|
|
||||||
|
|
||||||
**HassOS release with the issue:**
|
|
||||||
<!--
|
|
||||||
- Frontend -> Developer tools -> Info
|
|
||||||
- Or use this command: hass --version
|
|
||||||
-->
|
|
||||||
|
|
||||||
**Supervisor logs:**
|
|
||||||
<!--
|
|
||||||
- Frontend -> Hass.io -> System
|
|
||||||
- Or use this command: ha su logs
|
|
||||||
-->
|
|
||||||
|
|
||||||
**Journal logs:**
|
|
||||||
<!--
|
|
||||||
- use this command: journalctl
|
|
||||||
-->
|
|
||||||
|
|
||||||
**Kernel logs:**
|
|
||||||
<!--
|
|
||||||
- use this command: dmesg
|
|
||||||
-->
|
|
||||||
|
|
||||||
**Description of problem:**
|
|
105
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
Normal file
105
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
Normal file
@@ -0,0 +1,105 @@
|
|||||||
|
name: Bug Report Form
|
||||||
|
description: Report an issue related to the Home Assistant Operating System.
|
||||||
|
labels: bug
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
Make sure to test with the last version of the Operating System before reporting a bug.
|
||||||
|
If the bug appears to be a regression, make sure to check if the bug indeed disappears
|
||||||
|
from the previous version. Use `ha os update --version x.y` command to downgrade.
|
||||||
|
- type: textarea
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
attributes:
|
||||||
|
label: Describe the issue you are experiencing
|
||||||
|
description: Provide a clear and concise description of what the bug is.
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
## Environment
|
||||||
|
- type: dropdown
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
attributes:
|
||||||
|
label: What operating system image do you use?
|
||||||
|
options:
|
||||||
|
- generic-x86-64 (Generic UEFI capable x86-64 systems)
|
||||||
|
- khadas-vim3 (Khadas VIM3)
|
||||||
|
- odroid-c2 (Hardkernel ODROID-C2)
|
||||||
|
- odroid-c4 (Hardkernel ODROID-C4)
|
||||||
|
- odroid-n2 (Hardkernel ODROID-N2/N2+)
|
||||||
|
- odroid-xu4 (Hardkernel ODROID-XU4)
|
||||||
|
- ova (for Virtual Machines)
|
||||||
|
- rpi2 (Raspberry Pi 2)
|
||||||
|
- rpi3 (Raspberry Pi 3 32-bit OS)
|
||||||
|
- rpi3-64 (Raspberry Pi 3 64-bit OS)
|
||||||
|
- rpi4 (Raspberry Pi 4/400 32-bit OS)
|
||||||
|
- rpi4-64 (Raspberry Pi 4/400 64-bit OS)
|
||||||
|
- tinker (ASUS Tinker Board/Tinker Board S)
|
||||||
|
description: >
|
||||||
|
Can be found in the [Configuration panel -> Settings -> Info](https://my.home-assistant.io/redirect/info/). It is listed as the `Board` value.
|
||||||
|
|
||||||
|
[](https://my.home-assistant.io/redirect/info/)
|
||||||
|
- type: input
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
attributes:
|
||||||
|
label: What version of Home Assistant Operating System is installed?
|
||||||
|
placeholder: "6.6"
|
||||||
|
description: >
|
||||||
|
Can be found in the [Configuration panel -> Settings -> Info](https://my.home-assistant.io/redirect/info/). It is listed as the `Host Operating System` value.
|
||||||
|
- type: dropdown
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
attributes:
|
||||||
|
label: Did you upgrade the Operating System.
|
||||||
|
options:
|
||||||
|
- "Yes"
|
||||||
|
- "No"
|
||||||
|
- type: textarea
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
attributes:
|
||||||
|
label: Steps to reproduce the issue
|
||||||
|
description: |
|
||||||
|
Please tell us exactly how to reproduce your issue.
|
||||||
|
Provide clear and concise step by step instructions and add code snippets if needed.
|
||||||
|
value: |
|
||||||
|
1.
|
||||||
|
2.
|
||||||
|
3.
|
||||||
|
...
|
||||||
|
- type: textarea
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
attributes:
|
||||||
|
label: Anything in the Supervisor logs that might be useful for us?
|
||||||
|
description: >
|
||||||
|
Supervisor Logs can be found under [Configuration panel -> Add-ons, Backup & Supervisor -> System](https://my.home-assistant.io/redirect/supervisor_logs/), then choose Log Provider `Supervisor`.
|
||||||
|
|
||||||
|
[](https://my.home-assistant.io/redirect/supervisor_logs/)
|
||||||
|
render: txt
|
||||||
|
- type: textarea
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
attributes:
|
||||||
|
label: Anything in the Host logs that might be useful for us?
|
||||||
|
description: >
|
||||||
|
Supervisor Logs can be found under [Configuration panel -> Add-ons, Backup & Supervisor -> System](https://my.home-assistant.io/redirect/supervisor_logs/), then choose Log Provider `Host`.
|
||||||
|
render: txt
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: System Health information
|
||||||
|
description: >
|
||||||
|
**Optional** Copy the full System Health in this text area.
|
||||||
|
|
||||||
|
Can be found in the [Configuration panel -> Settings -> Info](https://my.home-assistant.io/redirect/info/).
|
||||||
|
Use the copy icon on top right and choose `For GitHub`.
|
||||||
|
- type: textarea
|
||||||
|
attributes:
|
||||||
|
label: Additional information
|
||||||
|
description: >
|
||||||
|
**Optional** If you have any additional information for us, use the field below.
|
||||||
|
Please note, you can attach screenshots or screen recordings here, by
|
||||||
|
dragging and dropping files in the field below.
|
21
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
21
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
blank_issues_enabled: false
|
||||||
|
contact_links:
|
||||||
|
- name: Report incorrect or missing information on our documentation
|
||||||
|
url: https://github.com/home-assistant/home-assistant.io/issues
|
||||||
|
about: Our documentation has its own issue tracker. Please report issues with the website there.
|
||||||
|
|
||||||
|
- name: Report incorrect or missing information on our developer documentation
|
||||||
|
url: https://github.com/home-assistant/developers.home-assistant.io/issues
|
||||||
|
about: Our developer documentation has its own issue tracker. Please report issues with the website there.
|
||||||
|
|
||||||
|
- name: Request a feature for the Operating System
|
||||||
|
url: https://community.home-assistant.io/c/feature-requests
|
||||||
|
about: Request an new feature for the Operating System.
|
||||||
|
|
||||||
|
- name: I have a question or need support
|
||||||
|
url: https://www.home-assistant.io/help
|
||||||
|
about: We use GitHub for tracking bugs, check our website for resources on getting help.
|
||||||
|
|
||||||
|
- name: I'm unsure where to go?
|
||||||
|
url: https://www.home-assistant.io/join-chat
|
||||||
|
about: If you are unsure where to go, then joining our chat is recommended; Just ask!
|
32
.github/label-actions.yml
vendored
Normal file
32
.github/label-actions.yml
vendored
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
assume-fixed:
|
||||||
|
comment: >
|
||||||
|
:wave: @{issue-author}, thanks for reporting an issue!
|
||||||
|
|
||||||
|
|
||||||
|
This issue is assumed to be fixed in the latest stable release. Please
|
||||||
|
reopen in case you can still reproduce the issue with the latest stable
|
||||||
|
release. You can find the latest stable release at
|
||||||
|
https://github.com/home-assistant/operating-system/releases/latest
|
||||||
|
close: true
|
||||||
|
|
||||||
|
core-issue:
|
||||||
|
comment: >
|
||||||
|
:wave: @{issue-author}, thanks for reporting an issue!
|
||||||
|
|
||||||
|
|
||||||
|
It looks like this issue is related to Home Assistant Core. Please check
|
||||||
|
the [Home Assistant Core](https://github.com/home-assistant/core/issues)
|
||||||
|
repository, the issue might have been reported already. Open a new issue
|
||||||
|
in that repository if you can't find a matching issue.
|
||||||
|
close: true
|
||||||
|
|
||||||
|
supervisor-issue:
|
||||||
|
comment: >
|
||||||
|
:wave: @{issue-author}, thanks for reporting an issue!
|
||||||
|
|
||||||
|
|
||||||
|
It looks like this issue is related to Home Assistant Supervisor. Please
|
||||||
|
check the [Home Assistant Supervisor](https://github.com/home-assistant/supervisor/issues)
|
||||||
|
repository, the issue might have been reported already. Open a new issue
|
||||||
|
in that repository if you can't find a matching issue.
|
||||||
|
close: true
|
23
.github/release-drafter.yml
vendored
23
.github/release-drafter.yml
vendored
@@ -1,16 +1,27 @@
|
|||||||
|
name-template: Home Assistant OS $NEXT_MINOR_VERSION
|
||||||
|
version-template: "$MAJOR.$MINOR"
|
||||||
categories:
|
categories:
|
||||||
- title: 'HassOS Core'
|
- title: 'Home Assistant Operating System'
|
||||||
label: 'os'
|
label: 'os'
|
||||||
- title: 'Build'
|
- title: 'Build System'
|
||||||
label: 'build'
|
label: 'build'
|
||||||
- title: 'Raspberry Pi'
|
- title: 'Raspberry Pi'
|
||||||
label: 'board/raspberrypi'
|
label: 'board/raspberrypi'
|
||||||
|
- title: 'Home Assistant Yellow'
|
||||||
|
label: 'board/yellow'
|
||||||
- title: 'Open Virtual Appliance'
|
- title: 'Open Virtual Appliance'
|
||||||
label: 'board/ova'
|
label: 'board/ova'
|
||||||
- title: 'Intel-Nuc'
|
- title: 'Generic x86-64'
|
||||||
label: 'board/intel-nuc'
|
label: 'board/generic-x86-64'
|
||||||
- title: 'Hardkernel'
|
- title: 'Hardkernel ODROID'
|
||||||
label: 'board/hardkernel'
|
label: 'board/odroid'
|
||||||
|
- title: 'ASUS Tinker'
|
||||||
|
label: 'board/tinker'
|
||||||
|
- title: 'Khadas VIM Series'
|
||||||
|
label: 'board/khadas'
|
||||||
|
- title: 'Generic aarch64'
|
||||||
|
label: 'board/generic-aarch64'
|
||||||
|
filter-by-commitish: true
|
||||||
template: |
|
template: |
|
||||||
## Changes
|
## Changes
|
||||||
|
|
||||||
|
17
.github/stale.yml
vendored
17
.github/stale.yml
vendored
@@ -1,17 +0,0 @@
|
|||||||
# Number of days of inactivity before an issue becomes stale
|
|
||||||
daysUntilStale: 60
|
|
||||||
# Number of days of inactivity before a stale issue is closed
|
|
||||||
daysUntilClose: 7
|
|
||||||
# Issues with these labels will never be considered stale
|
|
||||||
exemptLabels:
|
|
||||||
- pinned
|
|
||||||
- security
|
|
||||||
# Label to use when marking an issue as stale
|
|
||||||
staleLabel: wontfix
|
|
||||||
# Comment to post when marking an issue as stale. Set to `false` to disable
|
|
||||||
markComment: >
|
|
||||||
This issue has been automatically marked as stale because it has not had
|
|
||||||
recent activity. It will be closed if no further activity occurs. Thank you
|
|
||||||
for your contributions.
|
|
||||||
# Comment to post when closing a stale issue. Set to `false` to disable
|
|
||||||
closeComment: false
|
|
140
.github/workflows/dev.yml
vendored
Normal file
140
.github/workflows/dev.yml
vendored
Normal file
@@ -0,0 +1,140 @@
|
|||||||
|
# Home Assistant Operating System build workflow
|
||||||
|
|
||||||
|
name: Development build
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
pull_request_target:
|
||||||
|
types: [opened,synchronize,labeled]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
prepare:
|
||||||
|
if: ${{ github.event_name == 'workflow_dispatch' || contains(github.event.pull_request.labels.*.name, 'run-dev-build') }}
|
||||||
|
name: Prepare build
|
||||||
|
runs-on: [ "ubuntu-20.04" ]
|
||||||
|
outputs:
|
||||||
|
version_main: ${{ steps.version_main.outputs.version_main }}
|
||||||
|
version_dev: ${{ steps.version_dev.outputs.version_dev }}${{ steps.version_pr.outputs.version_pr }}
|
||||||
|
matrix: ${{ steps.generate_matrix.outputs.result }}
|
||||||
|
steps:
|
||||||
|
- name: Generate Development build version
|
||||||
|
shell: bash
|
||||||
|
id: version_dev
|
||||||
|
run: |
|
||||||
|
version_dev="dev$(date --utc +'%Y%m%d')"
|
||||||
|
echo "Development version \"${version_dev}\""
|
||||||
|
echo "::set-output name=version_dev::${version_dev}"
|
||||||
|
- name: Generate Development build version for PR
|
||||||
|
if: ${{ github.event.pull_request }}
|
||||||
|
shell: bash
|
||||||
|
id: version_pr
|
||||||
|
run: |
|
||||||
|
version_pr=$(printf "%05d" ${{ github.event.pull_request.number }})
|
||||||
|
echo "Development build for PR #${{ github.event.pull_request.number }}"
|
||||||
|
echo "::set-output name=version_pr::${version_pr}"
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: Get Major/Minor version
|
||||||
|
id: version_main
|
||||||
|
run: |
|
||||||
|
major=$(cat ${GITHUB_WORKSPACE}/buildroot-external/meta | grep VERSION_MAJOR | cut -d'=' -f2)
|
||||||
|
build=$(cat ${GITHUB_WORKSPACE}/buildroot-external/meta | grep VERSION_BUILD | cut -d'=' -f2)
|
||||||
|
echo "::set-output name=version_main::${major}.${build}"
|
||||||
|
- name: Create build matrix
|
||||||
|
uses: actions/github-script@v4
|
||||||
|
id: generate_matrix
|
||||||
|
with:
|
||||||
|
script: |
|
||||||
|
const boards = require('./.github/workflows/matrix.json')
|
||||||
|
|
||||||
|
if (context.eventName == "workflow_dispatch") {
|
||||||
|
console.log("Run full build for all boards")
|
||||||
|
return { "board": boards }
|
||||||
|
}
|
||||||
|
|
||||||
|
const labels = context.payload.pull_request.labels.map(l => l.name)
|
||||||
|
const labelsSet = new Set(labels)
|
||||||
|
const buildBoards = boards.filter(b => labelsSet.has(b.label))
|
||||||
|
|
||||||
|
return { "board": buildBoards }
|
||||||
|
|
||||||
|
build:
|
||||||
|
if: ${{ github.event_name == 'workflow_dispatch' || contains(github.event.pull_request.labels.*.name, 'run-dev-build') }}
|
||||||
|
name: Development build for ${{ matrix.board.id }}
|
||||||
|
environment: "dev_build"
|
||||||
|
needs: prepare
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix: ${{ fromJson(needs.prepare.outputs.matrix) }}
|
||||||
|
runs-on: ${{ matrix.board.runner }}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Define git reference
|
||||||
|
uses: actions/github-script@v4
|
||||||
|
id: generate_gitref
|
||||||
|
with:
|
||||||
|
script: |
|
||||||
|
if (context.eventName == "workflow_dispatch")
|
||||||
|
return { "ref": context.ref }
|
||||||
|
return { "ref": context.payload.pull_request.head.sha }
|
||||||
|
|
||||||
|
- name: Checkout source
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
submodules: true
|
||||||
|
persist-credentials: false
|
||||||
|
ref: ${{ fromJSON(steps.generate_gitref.outputs.result).ref }}
|
||||||
|
|
||||||
|
- name: Build container
|
||||||
|
run: docker build -t haos-builder .
|
||||||
|
|
||||||
|
- name: 'Add release PKI certs'
|
||||||
|
env:
|
||||||
|
RAUC_CERTIFICATE: ${{ secrets.RAUC_CERTIFICATE }}
|
||||||
|
RAUC_PRIVATE_KEY: ${{ secrets.RAUC_PRIVATE_KEY }}
|
||||||
|
run: |
|
||||||
|
echo -e "-----BEGIN CERTIFICATE-----\n${RAUC_CERTIFICATE}\n-----END CERTIFICATE-----" > cert.pem
|
||||||
|
echo -e "-----BEGIN PRIVATE KEY-----\n${RAUC_PRIVATE_KEY}\n-----END PRIVATE KEY-----" > key.pem
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
BUILDER_UID="$(id -u)"
|
||||||
|
BUILDER_GID="$(id -g)"
|
||||||
|
docker run --rm --privileged -v "${GITHUB_WORKSPACE}:/build" \
|
||||||
|
-e BUILDER_UID="${BUILDER_UID}" -e BUILDER_GID="${BUILDER_GID}" \
|
||||||
|
-v "${{ matrix.board.runner }}-build-cache:/cache" \
|
||||||
|
-v "/build/output" \
|
||||||
|
haos-builder make BUILDDIR=/build VERSION_DEV=${{ needs.prepare.outputs.version_dev }} ${{ matrix.board.defconfig }}
|
||||||
|
|
||||||
|
- name: Upload images
|
||||||
|
uses: burnett01/rsync-deployments@4.1
|
||||||
|
with:
|
||||||
|
rsh: -q
|
||||||
|
switches: -aW
|
||||||
|
path: release/
|
||||||
|
remote_path: ${{ secrets.DEV_TARGET_PATH }}/${{ needs.prepare.outputs.version_main }}.${{ needs.prepare.outputs.version_dev }}/
|
||||||
|
remote_host: ${{ secrets.DEV_HOST }}
|
||||||
|
remote_port: ${{ secrets.DEV_PORT }}
|
||||||
|
remote_user: ${{ secrets.DEV_USERNAME }}
|
||||||
|
remote_key: ${{ secrets.DEV_SSH_KEY }}
|
||||||
|
|
||||||
|
bump_version:
|
||||||
|
name: Bump dev channel version
|
||||||
|
if: ${{ github.event_name == 'workflow_dispatch' }}
|
||||||
|
needs: [ build, prepare ]
|
||||||
|
runs-on: [ "ubuntu-20.04" ]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Initialize git
|
||||||
|
uses: home-assistant/actions/helpers/git-init@master
|
||||||
|
with:
|
||||||
|
name: ${{ secrets.GIT_NAME }}
|
||||||
|
email: ${{ secrets.GIT_EMAIL }}
|
||||||
|
token: ${{ secrets.GIT_TOKEN }}
|
||||||
|
|
||||||
|
- name: Bump Home Assistant OS dev channel version to ${{ needs.prepare.outputs.version_main }}.${{ needs.prepare.outputs.version_dev }}
|
||||||
|
uses: home-assistant/actions/helpers/version-push@master
|
||||||
|
with:
|
||||||
|
key: "hassos[]"
|
||||||
|
key-description: "Home Assistant OS"
|
||||||
|
version: ${{ needs.prepare.outputs.version_main }}.${{ needs.prepare.outputs.version_dev }}
|
||||||
|
channel: "dev"
|
17
.github/workflows/label-actions.yml
vendored
Normal file
17
.github/workflows/label-actions.yml
vendored
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
name: 'Label Actions'
|
||||||
|
|
||||||
|
on:
|
||||||
|
issues:
|
||||||
|
types: [labeled, unlabeled]
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
issues: write
|
||||||
|
pull-requests: write
|
||||||
|
discussions: write
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
action:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: dessant/label-actions@v2
|
92
.github/workflows/matrix.json
vendored
Normal file
92
.github/workflows/matrix.json
vendored
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"id": "ova",
|
||||||
|
"defconfig": "ova",
|
||||||
|
"runner": "x86-64-runner",
|
||||||
|
"label": "board/ova"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "generic-x86-64",
|
||||||
|
"defconfig": "generic_x86_64",
|
||||||
|
"runner": "x86-64-runner",
|
||||||
|
"label": "board/generic-x86-64"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "generic-aarch64",
|
||||||
|
"defconfig": "generic_aarch64",
|
||||||
|
"runner": "aarch64-runner",
|
||||||
|
"label": "board/generic-aarch64"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "khadas-vim3",
|
||||||
|
"defconfig": "khadas_vim3",
|
||||||
|
"runner": "aarch64-runner",
|
||||||
|
"label": "board/khadas"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "odroid-c2",
|
||||||
|
"defconfig": "odroid_c2",
|
||||||
|
"runner": "aarch64-runner",
|
||||||
|
"label": "board/odroid"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "odroid-c4",
|
||||||
|
"defconfig": "odroid_c4",
|
||||||
|
"runner": "aarch64-runner",
|
||||||
|
"label": "board/odroid"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "odroid-n2",
|
||||||
|
"defconfig": "odroid_n2",
|
||||||
|
"runner": "aarch64-runner",
|
||||||
|
"label": "board/odroid"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "odroid-xu4",
|
||||||
|
"defconfig": "odroid_xu4",
|
||||||
|
"runner": "aarch64-runner",
|
||||||
|
"label": "board/odroid"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "rpi2",
|
||||||
|
"defconfig": "rpi2",
|
||||||
|
"runner": "arm-runner",
|
||||||
|
"label": "board/raspberrypi"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "rpi3",
|
||||||
|
"defconfig": "rpi3",
|
||||||
|
"runner": "arm-runner",
|
||||||
|
"label": "board/raspberrypi"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "rpi3-64",
|
||||||
|
"defconfig": "rpi3_64",
|
||||||
|
"runner": "aarch64-runner",
|
||||||
|
"label": "board/raspberrypi"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "rpi4",
|
||||||
|
"defconfig": "rpi4",
|
||||||
|
"runner": "arm-runner",
|
||||||
|
"label": "board/raspberrypi"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "rpi4-64",
|
||||||
|
"defconfig": "rpi4_64",
|
||||||
|
"runner": "aarch64-runner",
|
||||||
|
"label": "board/raspberrypi"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "yellow",
|
||||||
|
"defconfig": "yellow",
|
||||||
|
"runner": "aarch64-runner",
|
||||||
|
"label": "board/yellow"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "tinker",
|
||||||
|
"defconfig": "tinker",
|
||||||
|
"runner": "arm-runner",
|
||||||
|
"label": "board/tinker"
|
||||||
|
}
|
||||||
|
]
|
28
.github/workflows/pr-checks.yml
vendored
Normal file
28
.github/workflows/pr-checks.yml
vendored
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
# Home Assistant Operating System pull-request checks
|
||||||
|
|
||||||
|
name: PR checks
|
||||||
|
|
||||||
|
on: [pull_request]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
linters:
|
||||||
|
runs-on: ubuntu-20.04
|
||||||
|
steps:
|
||||||
|
- name: Check out code
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
submodules: true
|
||||||
|
|
||||||
|
- name: Check Dockerfile
|
||||||
|
uses: brpaz/hadolint-action@v1.1.0
|
||||||
|
with:
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
|
||||||
|
- name: Check shell scripts
|
||||||
|
uses: ludeeus/action-shellcheck@1.1.0
|
||||||
|
with:
|
||||||
|
ignore: buildroot buildroot-external/package/xe-guest-utilities
|
||||||
|
|
||||||
|
- name: Check buildroot-external packages
|
||||||
|
run: |
|
||||||
|
buildroot/utils/check-package --exclude PackageHeader --br2-external buildroot-external/package/*/*
|
15
.github/workflows/release-drafter.yml
vendored
Normal file
15
.github/workflows/release-drafter.yml
vendored
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
name: Release Drafter
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- dev
|
||||||
|
- rel-*
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
update_release_draft:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: release-drafter/release-drafter@v5
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
175
.github/workflows/release.yml
vendored
Normal file
175
.github/workflows/release.yml
vendored
Normal file
@@ -0,0 +1,175 @@
|
|||||||
|
# Home Assistant Operating System release build workflow
|
||||||
|
|
||||||
|
name: Release build
|
||||||
|
|
||||||
|
on:
|
||||||
|
release:
|
||||||
|
types: [published]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
validate_release:
|
||||||
|
name: Validate release
|
||||||
|
runs-on: [ "ubuntu-20.04" ]
|
||||||
|
outputs:
|
||||||
|
version: ${{ steps.version_check.outputs.version }}
|
||||||
|
version_dev: ${{ steps.version_check.outputs.version_dev }}
|
||||||
|
matrix: ${{ steps.generate_matrix.outputs.result }}
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: Validate version
|
||||||
|
id: version_check
|
||||||
|
run: |
|
||||||
|
major=$(cat ${GITHUB_WORKSPACE}/buildroot-external/meta | grep VERSION_MAJOR | cut -d'=' -f2)
|
||||||
|
build=$(cat ${GITHUB_WORKSPACE}/buildroot-external/meta | grep VERSION_BUILD | cut -d'=' -f2)
|
||||||
|
tag_major=$(echo "${{ github.event.release.tag_name }}" | cut -d '.' -f 1)
|
||||||
|
tag_build=$(echo "${{ github.event.release.tag_name }}" | cut -d '.' -f 2)
|
||||||
|
tag_dev=$(echo "${{ github.event.release.tag_name }}" | cut -d '.' -f 3)
|
||||||
|
if [ "${major}.${build}" != "${tag_major}.${tag_build}" ]; then
|
||||||
|
echo "Version number in Buildroot metadata is does not match tag (${major}.${build} vs ${{ github.event.release.tag_name }})."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ "" != "${tag_dev}" ]; then
|
||||||
|
echo "Note: Release build with custom dev part: ${tag_dev}."
|
||||||
|
echo "::set-output name=version::${major}.${build}.${tag_dev}"
|
||||||
|
else
|
||||||
|
echo "::set-output name=version::${major}.${build}"
|
||||||
|
fi
|
||||||
|
echo "::set-output name=version_dev::${tag_dev}"
|
||||||
|
- name: Create build matrix
|
||||||
|
uses: actions/github-script@v4
|
||||||
|
id: generate_matrix
|
||||||
|
with:
|
||||||
|
script: |
|
||||||
|
const boards = require('./.github/workflows/matrix.json')
|
||||||
|
return { "board": boards }
|
||||||
|
|
||||||
|
build:
|
||||||
|
name: Release build for ${{ matrix.board.id }}
|
||||||
|
needs: validate_release
|
||||||
|
strategy:
|
||||||
|
matrix: ${{ fromJson(needs.validate_release.outputs.matrix) }}
|
||||||
|
runs-on: ${{ matrix.board.runner }}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
submodules: true
|
||||||
|
|
||||||
|
- name: Build container
|
||||||
|
run: docker build -t haos-builder .
|
||||||
|
|
||||||
|
- name: 'Add release PKI certs'
|
||||||
|
env:
|
||||||
|
RAUC_CERTIFICATE: ${{ secrets.RAUC_CERTIFICATE }}
|
||||||
|
RAUC_PRIVATE_KEY: ${{ secrets.RAUC_PRIVATE_KEY }}
|
||||||
|
run: |
|
||||||
|
echo -e "-----BEGIN CERTIFICATE-----\n${RAUC_CERTIFICATE}\n-----END CERTIFICATE-----" > cert.pem
|
||||||
|
echo -e "-----BEGIN PRIVATE KEY-----\n${RAUC_PRIVATE_KEY}\n-----END PRIVATE KEY-----" > key.pem
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
BUILDER_UID="$(id -u)"
|
||||||
|
BUILDER_GID="$(id -g)"
|
||||||
|
docker run --rm --privileged -v "${GITHUB_WORKSPACE}:/build" \
|
||||||
|
-e BUILDER_UID="${BUILDER_UID}" -e BUILDER_GID="${BUILDER_GID}" \
|
||||||
|
-v "${{ matrix.board.runner }}-build-cache:/cache" \
|
||||||
|
-v "/build/output" \
|
||||||
|
haos-builder make BUILDDIR=/build VERSION_DEV=${{ needs.validate_release.outputs.version_dev }} ${{ matrix.board.defconfig }}
|
||||||
|
|
||||||
|
- name: Upload disk image
|
||||||
|
if: ${{ matrix.board.id != 'ova' }}
|
||||||
|
uses: actions/upload-release-asset@v1
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
with:
|
||||||
|
upload_url: ${{ github.event.release.upload_url }}
|
||||||
|
asset_path: ${{ github.workspace }}/release/haos_${{ matrix.board.id }}-${{ needs.validate_release.outputs.version }}.img.xz
|
||||||
|
asset_name: haos_${{ matrix.board.id }}-${{ needs.validate_release.outputs.version }}.img.xz
|
||||||
|
asset_content_type: application/x-xz
|
||||||
|
|
||||||
|
- name: Upload rauc update
|
||||||
|
uses: actions/upload-release-asset@v1
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
with:
|
||||||
|
upload_url: ${{ github.event.release.upload_url }}
|
||||||
|
asset_path: ${{ github.workspace }}/release/haos_${{ matrix.board.id }}-${{ needs.validate_release.outputs.version }}.raucb
|
||||||
|
asset_name: haos_${{ matrix.board.id }}-${{ needs.validate_release.outputs.version }}.raucb
|
||||||
|
asset_content_type: application/octet-stream
|
||||||
|
|
||||||
|
- name: Upload ova image
|
||||||
|
if: ${{ matrix.board.id == 'ova' }}
|
||||||
|
uses: actions/upload-release-asset@v1
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
with:
|
||||||
|
upload_url: ${{ github.event.release.upload_url }}
|
||||||
|
asset_path: ${{ github.workspace }}/release/haos_${{ matrix.board.id }}-${{ needs.validate_release.outputs.version }}.ova
|
||||||
|
asset_name: haos_${{ matrix.board.id }}-${{ needs.validate_release.outputs.version }}.ova
|
||||||
|
asset_content_type: application/x-tar
|
||||||
|
|
||||||
|
- name: Upload qcow2 image
|
||||||
|
if: ${{ matrix.board.id == 'ova' || matrix.board.id == 'generic-aarch64' }}
|
||||||
|
uses: actions/upload-release-asset@v1
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
with:
|
||||||
|
upload_url: ${{ github.event.release.upload_url }}
|
||||||
|
asset_path: ${{ github.workspace }}/release/haos_${{ matrix.board.id }}-${{ needs.validate_release.outputs.version }}.qcow2.xz
|
||||||
|
asset_name: haos_${{ matrix.board.id }}-${{ needs.validate_release.outputs.version }}.qcow2.xz
|
||||||
|
asset_content_type: application/x-xz
|
||||||
|
|
||||||
|
- name: Upload vdi image
|
||||||
|
if: ${{ matrix.board.id == 'ova' }}
|
||||||
|
uses: actions/upload-release-asset@v1
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
with:
|
||||||
|
upload_url: ${{ github.event.release.upload_url }}
|
||||||
|
asset_path: ${{ github.workspace }}/release/haos_${{ matrix.board.id }}-${{ needs.validate_release.outputs.version }}.vdi.zip
|
||||||
|
asset_name: haos_${{ matrix.board.id }}-${{ needs.validate_release.outputs.version }}.vdi.zip
|
||||||
|
asset_content_type: application/zip
|
||||||
|
|
||||||
|
- name: Upload vhdx image
|
||||||
|
if: ${{ matrix.board.id == 'ova' }}
|
||||||
|
uses: actions/upload-release-asset@v1
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
with:
|
||||||
|
upload_url: ${{ github.event.release.upload_url }}
|
||||||
|
asset_path: ${{ github.workspace }}/release/haos_${{ matrix.board.id }}-${{ needs.validate_release.outputs.version }}.vhdx.zip
|
||||||
|
asset_name: haos_${{ matrix.board.id }}-${{ needs.validate_release.outputs.version }}.vhdx.zip
|
||||||
|
asset_content_type: application/zip
|
||||||
|
|
||||||
|
- name: Upload vmdk image
|
||||||
|
if: ${{ matrix.board.id == 'ova' || matrix.board.id == 'generic-aarch64' }}
|
||||||
|
uses: actions/upload-release-asset@v1
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
with:
|
||||||
|
upload_url: ${{ github.event.release.upload_url }}
|
||||||
|
asset_path: ${{ github.workspace }}/release/haos_${{ matrix.board.id }}-${{ needs.validate_release.outputs.version }}.vmdk.zip
|
||||||
|
asset_name: haos_${{ matrix.board.id }}-${{ needs.validate_release.outputs.version }}.vmdk.zip
|
||||||
|
asset_content_type: application/zip
|
||||||
|
|
||||||
|
bump_version:
|
||||||
|
name: Bump dev version to ${{ needs.validate_release.outputs.version }}
|
||||||
|
needs: [ build, validate_release ]
|
||||||
|
runs-on: [ "ubuntu-20.04" ]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Initialize git
|
||||||
|
uses: home-assistant/actions/helpers/git-init@master
|
||||||
|
with:
|
||||||
|
name: ${{ secrets.GIT_NAME }}
|
||||||
|
email: ${{ secrets.GIT_EMAIL }}
|
||||||
|
token: ${{ secrets.GIT_TOKEN }}
|
||||||
|
|
||||||
|
- name: Bump Home Assistant OS beta version
|
||||||
|
uses: home-assistant/actions/helpers/version-push@master
|
||||||
|
with:
|
||||||
|
key: "hassos[]"
|
||||||
|
key-description: "Home Assistant OS"
|
||||||
|
version: ${{ needs.validate_release.outputs.version }}
|
||||||
|
channel: "beta"
|
47
.github/workflows/stale.yml
vendored
Normal file
47
.github/workflows/stale.yml
vendored
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
name: Stale
|
||||||
|
|
||||||
|
# yamllint disable-line rule:truthy
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: "0 * * * *"
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
stale:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
# The 90 day stale policy
|
||||||
|
# Used for:
|
||||||
|
# - Issues & PRs
|
||||||
|
# - No PRs marked as no-stale or pinned
|
||||||
|
# - No issues marked as no-stale, help-wanted or pinned
|
||||||
|
- name: 90 days stale issues & PRs policy
|
||||||
|
uses: actions/stale@v4
|
||||||
|
with:
|
||||||
|
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
days-before-stale: 90
|
||||||
|
days-before-close: 7
|
||||||
|
operations-per-run: 150
|
||||||
|
remove-stale-when-updated: true
|
||||||
|
stale-issue-label: "stale"
|
||||||
|
exempt-issue-labels: "no-stale,help-wanted,pinned,enhancement"
|
||||||
|
stale-issue-message: >
|
||||||
|
There hasn't been any activity on this issue recently. To keep our
|
||||||
|
backlog manageable we have to clean old issues, as many of them have
|
||||||
|
already been resolved with the latest updates.
|
||||||
|
|
||||||
|
Please make sure to update to the latest Home Assistant OS version and
|
||||||
|
check if that solves the issue. Let us know if that works for you by
|
||||||
|
adding a comment 👍
|
||||||
|
|
||||||
|
This issue has now been marked as stale and will be closed if no
|
||||||
|
further activity occurs. Thank you for your contributions.
|
||||||
|
|
||||||
|
stale-pr-label: "stale"
|
||||||
|
exempt-pr-labels: "no-stale,pinned"
|
||||||
|
stale-pr-message: >
|
||||||
|
There hasn't been any activity on this pull request recently. This
|
||||||
|
pull request has been automatically marked as stale because of that
|
||||||
|
and will be closed if no further activity occurs within 7 days.
|
||||||
|
|
||||||
|
Thank you for your contributions.
|
2
.gitignore
vendored
2
.gitignore
vendored
@@ -1,2 +1,4 @@
|
|||||||
|
.DS_Store
|
||||||
/release
|
/release
|
||||||
*.pem
|
*.pem
|
||||||
|
output*/
|
||||||
|
4
.gitmodules
vendored
Normal file
4
.gitmodules
vendored
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
[submodule "buildroot"]
|
||||||
|
path = buildroot
|
||||||
|
url = https://github.com/home-assistant/buildroot.git
|
||||||
|
branch = 2021.02.x-haos
|
41
Dockerfile
41
Dockerfile
@@ -1,4 +1,4 @@
|
|||||||
FROM ubuntu:18.04
|
FROM debian:bullseye
|
||||||
|
|
||||||
# Set shell
|
# Set shell
|
||||||
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
||||||
@@ -9,17 +9,46 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
|
|||||||
ca-certificates \
|
ca-certificates \
|
||||||
curl \
|
curl \
|
||||||
gpg-agent \
|
gpg-agent \
|
||||||
|
gpg \
|
||||||
|
dirmngr \
|
||||||
software-properties-common \
|
software-properties-common \
|
||||||
&& curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - \
|
&& curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add - \
|
||||||
&& add-apt-repository "deb https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" \
|
&& add-apt-repository "deb https://download.docker.com/linux/debian $(lsb_release -cs) stable" \
|
||||||
&& apt-get update && apt-get install -y --no-install-recommends \
|
&& apt-get update && apt-get install -y --no-install-recommends \
|
||||||
docker-ce \
|
docker-ce \
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
# Build Tools
|
# Build tools
|
||||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||||
wget patch vim cpio python unzip rsync bc bzip2 ncurses-dev sudo \
|
bash \
|
||||||
git make g++ file perl bash binutils locales qemu-utils bison flex \
|
bc \
|
||||||
|
binutils \
|
||||||
|
build-essential \
|
||||||
|
bzip2 \
|
||||||
|
cpio \
|
||||||
|
file \
|
||||||
|
git \
|
||||||
|
make \
|
||||||
|
ncurses-dev \
|
||||||
|
patch \
|
||||||
|
perl \
|
||||||
|
python3 \
|
||||||
|
python3-matplotlib \
|
||||||
|
python-is-python3 \
|
||||||
|
graphviz \
|
||||||
|
rsync \
|
||||||
|
sudo \
|
||||||
|
unzip \
|
||||||
|
zip \
|
||||||
|
wget \
|
||||||
|
qemu-utils \
|
||||||
|
openssh-client \
|
||||||
|
vim \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||||
|
skopeo \
|
||||||
|
jq \
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
# Init entry
|
# Init entry
|
||||||
|
9
Documentation/README.md
Normal file
9
Documentation/README.md
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
# Documentation
|
||||||
|
|
||||||
|
## Contents
|
||||||
|
|
||||||
|
- [Configuration](./configuration.md) - how users can configure HAOS
|
||||||
|
- [Network](./network.md) - approach to networking
|
||||||
|
- [Bluetooth](./bluetooth.md) - approach to bluetooth
|
||||||
|
- [Kernel](./kernel.md) - kernel versions
|
||||||
|
- [Boards](./boards/README.md) - board specific documentation
|
54
Documentation/boards/README.md
Normal file
54
Documentation/boards/README.md
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
# Boards
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
The following boards/devices are supported:
|
||||||
|
|
||||||
|
- Raspberry Pi
|
||||||
|
- Pi 4 Model B (1 GB, 2 GB, 4 GB and 8 GB model) 64-bit (recommended)
|
||||||
|
- Pi 4 Model B (1 GB, 2 GB, 4 GB and 8 GB model) 32-bit
|
||||||
|
- Pi 3 Model B and B+ 64-bit (recommended)
|
||||||
|
- Pi 3 Model B and B+ 32-bit
|
||||||
|
- Pi 2 (not recommended)
|
||||||
|
- Pi Zero-W (not recommended)
|
||||||
|
- Pi (not recommended)
|
||||||
|
- Hardkernel
|
||||||
|
- Odroid-N2
|
||||||
|
- Odroid-N2+
|
||||||
|
- Odroid-C2
|
||||||
|
- Odroid-C4
|
||||||
|
- Odroid-XU4
|
||||||
|
- Asus
|
||||||
|
- Tinker Board
|
||||||
|
- Generic x86-64 (UEFI, not suited for virtualization)
|
||||||
|
- Intel NUC5CPYH
|
||||||
|
- Intel NUC6CAYH
|
||||||
|
- Intel NUC10I3FNK2
|
||||||
|
- Gigabyte GB-BPCE-3455
|
||||||
|
- Computers supporting x86-64 architecture and UEFI boot should generally work
|
||||||
|
- Virtual appliance (x86_64/UEFI):
|
||||||
|
- VMDK
|
||||||
|
- OVA ?
|
||||||
|
- VHDX ?
|
||||||
|
- VDI ?
|
||||||
|
- QCOW2 ?
|
||||||
|
|
||||||
|
Notes:
|
||||||
|
- see ? above: are these currently supported? see ova documentation which explains issues with previous OVA distribution)
|
||||||
|
|
||||||
|
## Board specifics
|
||||||
|
|
||||||
|
|Board|Build|Config|Docs|
|
||||||
|
|-----|----|------|----|
|
||||||
|
|Pi4B 64-bit |`make rpi4_64` |[rpi4_64](../../buildroot-external/configs/rpi4_64_defconfig)|[raspberrypi](./raspberrypi/)|
|
||||||
|
|Pi4B 32-bit |`make rpi4` |[rpi4](../../buildroot-external/configs/rpi4_defconfig)|[raspberrypi](./raspberrypi/)|
|
||||||
|
|Pi3B 64-bit |`make rpi3_64` |[rpi3_64](../../buildroot-external/configs/rpi3_64_defconfig)|[raspberrypi](./raspberrypi/)|
|
||||||
|
|Pi3B 32-bit |`make rpi3` |[rpi3](../../buildroot-external/configs/rpi3_defconfig)|[raspberrypi](./raspberrypi/)|
|
||||||
|
|Pi2 |`make rpi2` |[rpi2](../../buildroot-external/configs/rpi2_defconfig)|[raspberrypi](./raspberrypi/)|
|
||||||
|
|Odroid-N2/N2+ |`make odroid_n2` |[odroid_n2](../../buildroot-external/configs/odroid_n2_defconfig)|[hardkernel](./hardkernel/)|
|
||||||
|
|Odroid-C2 |`make odroid_c2` |[odroid_c2](../../buildroot-external/configs/odroid_c2_defconfig)|[hardkernel](./hardkernel/)|
|
||||||
|
|Odroid-C4 |`make odroid_c4` |[odroid_c4](../../buildroot-external/configs/odroid_c4_defconfig)|[hardkernel](./hardkernel/)|
|
||||||
|
|Odroid-XU4 |`make odroid_xu4` |[odroid_xu4](../../buildroot-external/configs/odroid_xu4_defconfig)|[hardkernel](./hardkernel/)|
|
||||||
|
|Tinker Board |`make tinker` |[tinker](../../buildroot-external/configs/tinker_defconfig)|[asus](./asus/)|
|
||||||
|
|Generic x86-64|`make generic_x86_64`|[generic_x86_64](../../buildroot-external/configs/generic_x86_64_defconfig)|[generic-x86-64](./generic-x86-64/)|
|
||||||
|
|OVA |`make ova` |[ova](../../buildroot-external/configs/ova_defconfig)|[ova](./ova/)|
|
31
Documentation/boards/asus/README.md
Normal file
31
Documentation/boards/asus/README.md
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
# Tinker Board
|
||||||
|
|
||||||
|
## Supported Hardware
|
||||||
|
|
||||||
|
| Device | Release Date | Support | Config |
|
||||||
|
|----------------|---------------|---------|----------|
|
||||||
|
| Tinker RK3288 | April 2017 | yes | [tinker](../../../buildroot-external/configs/tinker_defconfig) |
|
||||||
|
| Tinker S RK3288| January 2018 | yes | [tinker](../../../buildroot-external/configs/tinker_defconfig) |
|
||||||
|
| Tinker Edge T | November 2019 | no? | |
|
||||||
|
| Tinker Edge R | November 2019 | no? | |
|
||||||
|
|
||||||
|
## eMMC
|
||||||
|
|
||||||
|
eMMC support is provided with the same image. Just flash the image to the eMMC by connecting your Tinker Board S to your PC via Micro-USB. Refer to the Tinkerboard documentation how-to flash using Micro-USB and UMS.
|
||||||
|
|
||||||
|
The Home Assistant OS provided U-Boot does support UMS as well,
|
||||||
|
however manual intervention is necessary:
|
||||||
|
|
||||||
|
1. Set the jumper between Micro-USB and HDMI the maskrom mode
|
||||||
|
2. Insert SD card and connect the board via Micro-USB to your PC
|
||||||
|
3. Continusly press Ctrl+C to interrupt boot
|
||||||
|
4. Set the jumper back to the park position
|
||||||
|
5. Start UMS using:
|
||||||
|
```
|
||||||
|
ums 0 mmc 0
|
||||||
|
```
|
||||||
|
6. A mass storage device should appear. Flash Home Assistant OS to it.
|
||||||
|
|
||||||
|
## Serial console
|
||||||
|
|
||||||
|
To access the terminal over serial console, add `console=ttyS2,115200` to `cmdline.txt`. GPIO pins are: 34 = GND / 32 = UART TXD / 33 = UART RXD.
|
36
Documentation/boards/generic-aarch64/README.md
Normal file
36
Documentation/boards/generic-aarch64/README.md
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
# Generic aarch64
|
||||||
|
|
||||||
|
## Supported Hardware
|
||||||
|
|
||||||
|
This board configuration aims to support most aarch64 systems with UEFI boot
|
||||||
|
Hardware it has been tested with is listed below.
|
||||||
|
|
||||||
|
## Tested Hardware
|
||||||
|
|
||||||
|
| Device | Release Date | Support | Config |
|
||||||
|
|-----------------------|--------------|---------|-------------|
|
||||||
|
| QEMU | QEMU | yes | [generic_aarch64](../../../buildroot-external/configs/generic_aarch64_defconfig) |
|
||||||
|
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
|
||||||
|
- aarch64 support
|
||||||
|
- UEFI boot
|
||||||
|
|
||||||
|
## Wifi
|
||||||
|
|
||||||
|
WiFi is untested.
|
||||||
|
|
||||||
|
## Bluetooth
|
||||||
|
|
||||||
|
Bluetooth is untested.
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
Make sure secure boot is disabled in the UEFI BIOS settings.
|
||||||
|
|
||||||
|
Currently there is no shiny installation method. Checklist:
|
||||||
|
- Boot PC to live environment using PXE or USB
|
||||||
|
- Copy or download the Home Assistant OS image into your live environment
|
||||||
|
- unxz the image and dd to the local hard disk
|
||||||
|
- Reboot
|
61
Documentation/boards/generic-x86-64/README.md
Normal file
61
Documentation/boards/generic-x86-64/README.md
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
# Generic x86-64
|
||||||
|
|
||||||
|
## Supported Hardware
|
||||||
|
|
||||||
|
This board configuration aims to support most x86-64 systems with UEFI boot. The
|
||||||
|
main aim is to support Intel NUC mini PCs and similar systems. Hardware it has
|
||||||
|
been tested with is listed below.
|
||||||
|
|
||||||
|
## Tested Hardware
|
||||||
|
|
||||||
|
| Device | Release Date | Support | Config |
|
||||||
|
|-----------------------|--------------|---------|-------------|
|
||||||
|
| Intel NUC5CPYH | Q3 2015 | yes | [generic_x86_64](../../../buildroot-external/configs/generic_x86_64_defconfig) |
|
||||||
|
| Intel NUC6CAYH | Q4 2016 | yes | [generic_x86_64](../../../buildroot-external/configs/generic_x86_64_defconfig) |
|
||||||
|
| Intel NUC7i3DNHE | Q3 2017 | yes | [generic_x86_64](../../../buildroot-external/configs/generic_x86_64_defconfig) |
|
||||||
|
| Intel NUC10i3FNK2 | Q4 2019 | yes | [generic_x86_64](../../../buildroot-external/configs/generic_x86_64_defconfig) |
|
||||||
|
| Gigabyte GB-BPCE-3455 | 2017 | yes* | [generic_x86_64](../../../buildroot-external/configs/generic_x86_64_defconfig) |
|
||||||
|
|
||||||
|
\* needs 'nomodeset' in cmdline.txt if you want a console
|
||||||
|
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
|
||||||
|
- x86-64 support
|
||||||
|
- UEFI boot
|
||||||
|
- SATA/AHCI or eMMC storage
|
||||||
|
- Supported NIC:
|
||||||
|
- Intel Gigabit NIC (e1000, igb - via Linux mainline)
|
||||||
|
- Intel PCIe Gigabit NIC (e1000e - via out-of-tree module in *buildroot-external/package/intel-e1000e*)
|
||||||
|
- Realtek Gigabit NIC (r8169)
|
||||||
|
- Intel Wireless Wifi 802.11ac (iwlwifi, see below)
|
||||||
|
|
||||||
|
## Wifi
|
||||||
|
|
||||||
|
The following cards are supported:
|
||||||
|
|
||||||
|
- Intel Wireless 3160
|
||||||
|
- Intel Wireless 7260
|
||||||
|
- Intel Wireless 7265
|
||||||
|
- Intel Wireless-AC 3165
|
||||||
|
- Intel Wireless-AC 3168
|
||||||
|
- Intel Wireless-AC 8260
|
||||||
|
- Intel Wireless-AC 8265
|
||||||
|
- Intel Wireless-AC 9260
|
||||||
|
- Intel Wireless-AC 9461
|
||||||
|
- Intel Wireless-AC 9462
|
||||||
|
- Intel Wireless-AC 9560
|
||||||
|
|
||||||
|
## Bluetooth
|
||||||
|
|
||||||
|
Bluetooth is untested.
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
Make sure secure boot is disabled in the UEFI BIOS settings.
|
||||||
|
|
||||||
|
Currently there is no shiny installation method. Checklist:
|
||||||
|
- Boot PC to live environment using PXE or USB
|
||||||
|
- Copy or download the Home Assistant OS image into your live environment
|
||||||
|
- unxz the image and dd to the local hard disk
|
||||||
|
- Reboot
|
26
Documentation/boards/hardkernel/README.md
Normal file
26
Documentation/boards/hardkernel/README.md
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
# ODROID
|
||||||
|
|
||||||
|
## Supported Hardware
|
||||||
|
|
||||||
|
| Device | Release Date | Support | Config |
|
||||||
|
|----------------|---------------|--------------|-----------|
|
||||||
|
| ODROID-XU4 | 2015 | yes | [odroid_xu4](../../../buildroot-external/configs/odroid_xu4_defconfig)|
|
||||||
|
| ODROID-C2 | 2016 | yes | [odroid_c2](../../../buildroot-external/configs/odroid_c2_defconfig) |
|
||||||
|
| ODROID-C4 | 2020 | experimental | [odroid_c4](../../../buildroot-external/configs/odroid_c4_defconfig) |
|
||||||
|
| ODROID-N2 | 2019 | yes | [odroid_n2](../../../buildroot-external/configs/odroid_n2_defconfig) |
|
||||||
|
|
||||||
|
See separate documentation for each board.
|
||||||
|
|
||||||
|
## Connectivity devices
|
||||||
|
|
||||||
|
### Wi-Fi
|
||||||
|
|
||||||
|
The following devices have been tested on Home Assistant OS 5.8:
|
||||||
|
|
||||||
|
- [Bluetooth Module 2](https://www.hardkernel.com/shop/bluetooth-module-2/)
|
||||||
|
- [WiFi Module 3](https://www.hardkernel.com/shop/wifi-module-3/)
|
||||||
|
|
||||||
|
The [WiFi Module 5A](https://www.hardkernel.com/shop/wifi-module-5a/) is not
|
||||||
|
recommended as there is no upstream driver support available. The driver
|
||||||
|
currently compatible with recent Linux kernel version seems to have issues
|
||||||
|
connecting to 5GHz networks.
|
16
Documentation/boards/hardkernel/odroid-c4.md
Normal file
16
Documentation/boards/hardkernel/odroid-c4.md
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
# Odroid-C4
|
||||||
|
|
||||||
|
## Experimental
|
||||||
|
|
||||||
|
Odroid-C4 support is based heavily on the Odroid-C2 and N2 configurations. Given the similarity of the SoCs, as well as the comparable level of support in the Linux kernel, the C4 should hopefully present few surprises. However, Home Assistant support should be regarded as experimental.
|
||||||
|
|
||||||
|
Please also refer to the documentation pages for the [Odroid-C2](./odroid-c2.md) and [Odroid-N2](./odroid-n2.md), as some of that information may apply to the C4 as well.
|
||||||
|
|
||||||
|
Common C4 issues that have been specifically tested and appear to be working:
|
||||||
|
- boot from SD
|
||||||
|
- boot from eMMC
|
||||||
|
- MAC address obtained from eFuse
|
||||||
|
|
||||||
|
## GPIO
|
||||||
|
|
||||||
|
Refer to [the odroid wiki](https://wiki.odroid.com/odroid-c4/hardware/expansion_connectors).
|
@@ -12,3 +12,7 @@ eg. `console=ttyAML0,115200n8 console=tty0`
|
|||||||
## GPIO
|
## GPIO
|
||||||
|
|
||||||
Refer to [the odroid wiki](https://wiki.odroid.com/odroid-n2/hardware/expansion_connectors).
|
Refer to [the odroid wiki](https://wiki.odroid.com/odroid-n2/hardware/expansion_connectors).
|
||||||
|
At this point not all functionality is supported by the upstream kernel used
|
||||||
|
by Home Assistant OS.
|
||||||
|
|
||||||
|
The GPIO on pin 11 is used as a low active power button input.
|
||||||
|
@@ -1,22 +1,24 @@
|
|||||||
# Odroid-XU4
|
# ODROID-XU4
|
||||||
|
|
||||||
## eMMC
|
## eMMC
|
||||||
|
|
||||||
The Odroid XU4 has a hidden boot sector that is only visible on the Odroid itself (can't be written by a card reader). There are a couple possibilities:
|
The ODROID XU4 uses the eMMC boot partition to boot from. Typically eMMC readers can't write to this eMMC boot partition. There are a couple of possibilities:
|
||||||
1) If the eMMC already had a working image before flashing HassOS:
|
|
||||||
* It will be booting to uBoot (but no further).
|
1. **Working** e.g. the eMMC already had a working image before flashing HassOS:
|
||||||
* If you have the serial adapter, you should be able to enter `distro_bootcmd` at the uboot prompt to continue booting.
|
- It will be booting to U-Boot (but no further).
|
||||||
* If not, flash the HassOS image to an SD card and boot off that temporarily (while the eMMC is also plugged in).
|
- If you have the serial adapter, you should be able to enter `distro_bootcmd` at the uboot prompt to continue booting.
|
||||||
* Once booted, login at the prompts and then enter `dd if=/dev/mmcblk0 of=/dev/mmcblk0boot0 bs=512 skip=63 seek=62 count=1440` at the linux prompt.
|
- If not, flash the HassOS image to an SD card and boot off that temporarily (while the eMMC is also plugged in).
|
||||||
* Reboot with eMMC (don't forget to flip the boot switch to eMMC)
|
- Once booted, login at the prompts and then enter `dd if=/dev/mmcblk0 of=/dev/mmcblk0boot0 bs=512 skip=63 seek=62 count=1440` at the linux prompt.
|
||||||
2) Clean/wiped/corruped boot sector:
|
- Reboot with eMMC (don't forget to flip the boot switch to eMMC)
|
||||||
* You'll need to follow [Hardkernel's instructions](https://forum.odroid.com/viewtopic.php?f=53&t=6173) to get a working boot sector. Then flash HassOS and follow instructions above.
|
2. **Not Working** e.g. a clean/wiped/corruped eMMC boot partition:
|
||||||
* Alternatively, you can try flash HassOS to both an SD and eMMC, then boot off the SD with the eMMC also plugged in, then run `dd if=/dev/mmcblk1 of=/dev/mmcblk0boot0 bs=512 skip=1 seek=0 count=16381` at the Linux prompt. Note that this is untested, but in theory should work..
|
- You'll need to follow [Hardkernel's instructions](https://forum.odroid.com/viewtopic.php?f=53&t=6173) to get a working boot sector. Then flash HassOS and follow instructions above.
|
||||||
|
- Alternatively, you can try flash HassOS to both an SD and eMMC, then boot off the SD with the eMMC also plugged in, then run `dd if=/dev/mmcblk1 of=/dev/mmcblk0boot0 bs=512 skip=1 seek=0 count=16381` at the Linux prompt. Note that this is untested, but in theory should work..
|
||||||
|
|
||||||
If you are getting permissions issues when using the dd command, try disabling RO:
|
If you are getting permissions issues when using the dd command, try disabling RO:
|
||||||
`echo 0 > /sys/block/mmcblk0boot0/force_ro`
|
`echo 0 > /sys/block/mmcblk0boot0/force_ro`
|
||||||
to re-enable after running dd:
|
to re-enable after running dd:
|
||||||
`echo 1 > /sys/block/mmcblk0boot0/force_ro`
|
`echo 1 > /sys/block/mmcblk0boot0/force_ro`
|
||||||
|
|
||||||
## Console
|
## Console
|
||||||
|
|
||||||
By default, console access is granted over the serial header and over HDMI. Certain startup messages will only appear on the serial console by default. To show the messages on the HDMI console instead, swap the order of the two consoles in the `cmdline.txt` file on the boot partition. You can also delete the SAC2 console if you don't plan on using the serial adapter.
|
By default, console access is granted over the serial header and over HDMI. Certain startup messages will only appear on the serial console by default. To show the messages on the HDMI console instead, swap the order of the two consoles in the `cmdline.txt` file on the boot partition. You can also delete the SAC2 console if you don't plan on using the serial adapter.
|
||||||
|
@@ -1,50 +0,0 @@
|
|||||||
# Intel NUC
|
|
||||||
|
|
||||||
This board configuration supports the Intel NUC mini PCs and compatibles.
|
|
||||||
Probably most recent computers will work.
|
|
||||||
|
|
||||||
Requirements:
|
|
||||||
- x86-64 support
|
|
||||||
- UEFI boot
|
|
||||||
- SATA/AHCI storage
|
|
||||||
- Supported NIC:
|
|
||||||
- Intel Gigabit NIC (e1000, e1000e, igb)
|
|
||||||
- Realtek Gigabit NIC (r8169)
|
|
||||||
- Intel Wireless Wifi 802.11ac (iwlwifi, see below)
|
|
||||||
|
|
||||||
## Tested Hardware
|
|
||||||
|
|
||||||
| Device | Quirks |
|
|
||||||
|--------|-----------|
|
|
||||||
| Intel NUC5CPYH | |
|
|
||||||
| Gigabyte GB-BPCE-3455 | needs 'nomodeset' in cmdline.txt if you want a console |
|
|
||||||
|
|
||||||
|
|
||||||
## Wifi
|
|
||||||
|
|
||||||
The following cards are supported:
|
|
||||||
|
|
||||||
- Intel Wireless 3160
|
|
||||||
- Intel Wireless 7260
|
|
||||||
- Intel Wireless 7265
|
|
||||||
- Intel Wireless-AC 3165
|
|
||||||
- Intel Wireless-AC 3168
|
|
||||||
- Intel Wireless-AC 8260
|
|
||||||
- Intel Wireless-AC 8265
|
|
||||||
- Intel Wireless-AC 9260
|
|
||||||
- Intel Wireless-AC 9461
|
|
||||||
- Intel Wireless-AC 9462
|
|
||||||
- Intel Wireless-AC 9560
|
|
||||||
|
|
||||||
## Bluetooth
|
|
||||||
|
|
||||||
Bluetooth is untested.
|
|
||||||
|
|
||||||
## Installation
|
|
||||||
|
|
||||||
Currently there is no shiny installation method. Checklist:
|
|
||||||
- Boot PC to live-environment using PXE or USB
|
|
||||||
- Copy or download the hassos image into your live environment
|
|
||||||
- zcat the image to local harddisk
|
|
||||||
- Reboot
|
|
||||||
|
|
@@ -1,18 +0,0 @@
|
|||||||
# Virtual Machine
|
|
||||||
|
|
||||||
Using this VMDK in a virtual machine requires the following:
|
|
||||||
|
|
||||||
- Operating system: Other 4.x or later Linux (64-bit)
|
|
||||||
- Enabled support for UEFI boot
|
|
||||||
- SATA disk controller
|
|
||||||
- Minimal of 1GB RAM
|
|
||||||
- At least 2x vCPU
|
|
||||||
- An assigned network
|
|
||||||
|
|
||||||
# OVA (Open Virtual Appliance)
|
|
||||||
|
|
||||||
Currently, we only publish a VMDK virtual disk, due to issues with our previous OVA distribution. We are currently investigating our options to bring back the OVA distribution. However, the VMDK works on the following hypervisors:
|
|
||||||
|
|
||||||
- HyperV
|
|
||||||
- VirtualBox
|
|
||||||
- VMware
|
|
22
Documentation/boards/ova/README.md
Normal file
22
Documentation/boards/ova/README.md
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
# Virtual Machine
|
||||||
|
|
||||||
|
## Supported Hypervisors
|
||||||
|
|
||||||
|
| Hypervisor | Vendor | Support | Config |
|
||||||
|
|---------------------|-----------|-----------------|--------------------|
|
||||||
|
| HyperV | Microsoft | yes, via VMDK | [ova](../../../buildroot-external/configs/ova_defconfig) |
|
||||||
|
| VirtualBox | Oracle | yes, via VMDK | [ova](../../../buildroot-external/configs/ova_defconfig) |
|
||||||
|
| VMware | VMware | yes, via VMDK | [ova](../../../buildroot-external/configs/ova_defconfig) |
|
||||||
|
|
||||||
|
Currently we only publish a VMDK virtual disk due to issues with our previous OVA distribution. We are investigating our options to bring back the OVA distribution, however, the VMDK works for the hypervisors listed above.
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
|
||||||
|
Using this VMDK in a virtual machine requires the following:
|
||||||
|
|
||||||
|
- Operating system: Other 4.x or later Linux (64-bit)
|
||||||
|
- Enabled support for UEFI boot
|
||||||
|
- SATA disk controller
|
||||||
|
- Minimal of 1GB RAM
|
||||||
|
- At least 2x vCPU
|
||||||
|
- An assigned network
|
@@ -1,49 +0,0 @@
|
|||||||
# Raspberry PI
|
|
||||||
|
|
||||||
Supported Hardware:
|
|
||||||
|
|
||||||
| Device | Board |
|
|
||||||
|--------|-----------|
|
|
||||||
| Raspberry Pi A+/B/B+| rpi |
|
|
||||||
| Raspberry Pi Zero | rpi |
|
|
||||||
| Raspberry Pi Zero W | rpi0-w |
|
|
||||||
| Raspberry Pi 2 B | rpi2 |
|
|
||||||
| Raspberry Pi 3 B/B+ | rpi3 / rpi3-64 |
|
|
||||||
| Raspberry Pi 4 B | rpi4 / rpi4-64 |
|
|
||||||
|
|
||||||
## Limitation 64bit
|
|
||||||
|
|
||||||
The 64bit version is under development by RPi-Team. It work very nice but it could have some impacts. Actual we see that the SDcard access with ext4 are a bit slower than on 32bit.
|
|
||||||
|
|
||||||
## Serial console
|
|
||||||
|
|
||||||
For access to terminal over serial console, add `console=ttyAMA0,115200` to `cmdline.txt` and `enable_uart=1`, `dtoverlay=pi3-disable-bt` into `config.txt`. GPIO pins are: 6 = GND / 8 = UART TXD / 10 = UART RXD.
|
|
||||||
|
|
||||||
## I2C
|
|
||||||
|
|
||||||
Add `dtparam=i2c1=on` and `dtparam=i2c_arm=on` to `config.txt`. After that we create a module file on host with [config usb stick][config] or direct into `/etc/modules-load.d`.
|
|
||||||
|
|
||||||
rpi-i2c.conf:
|
|
||||||
```
|
|
||||||
i2c-dev
|
|
||||||
i2c-bcm2708
|
|
||||||
```
|
|
||||||
|
|
||||||
## USB Boot
|
|
||||||
|
|
||||||
USB mass storage boot is available on Raspberry Pi 3B, 3B+, 3A+, and 2B v1.2.
|
|
||||||
To enable USB boot, add `program_usb_boot_mode=1` into `config.txt`. Note that this **permanently** alters the one-time programmable memory of the device.
|
|
||||||
|
|
||||||
For more information see [RaspberryPi](https://www.raspberrypi.org/documentation/hardware/raspberrypi/bootmodes/msd.md).
|
|
||||||
|
|
||||||
### Caveats
|
|
||||||
|
|
||||||
* All bootable SD cards must be removed.
|
|
||||||
* Boot time can be significantly longer with USB. This is due to the boot process first attempting to boot from SD card, failing, and resorting to USB.
|
|
||||||
* Many USB drives simply do not work for boot. This is likely due to minimal driver support in uboot and will not be fixed. If you can't get it to boot on one drive, try a different brand/model. SanDisk Cruzer drives seem to have a higher rate of issues.
|
|
||||||
|
|
||||||
## Tweaks
|
|
||||||
|
|
||||||
If you don't need bluetooth, disabled it with add `dtoverlay=pi3-disable-bt` into `config.txt`.
|
|
||||||
|
|
||||||
[config]: ../configuration.md#automatic
|
|
50
Documentation/boards/raspberrypi/README.md
Normal file
50
Documentation/boards/raspberrypi/README.md
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
# Raspberry PI
|
||||||
|
|
||||||
|
## Supported Hardware
|
||||||
|
|
||||||
|
| Device | Release Date | Support | Config |
|
||||||
|
|---------------------|---------------|-----------------|--------------------|
|
||||||
|
| Raspberry Pi B/B+/A+|2012/2014/2014 | not recommended | [rpi](../../../buildroot-external/configs/rpi_defconfig) |
|
||||||
|
| Raspberry Pi 2 B |2015 | not recommended | [rpi2](../../../buildroot-external/configs/rpi2_defconfig) |
|
||||||
|
| Raspberry Pi 3 B/B+ |2016/2018 | yes | [rpi3](../../../buildroot-external/configs/rpi3_defconfig) / [rpi3_64](../../../buildroot-external/configs/rpi3_64_defconfig) |
|
||||||
|
| Raspberry Pi 4 B |2019 | yes | [rpi4](../../../buildroot-external/configs/rpi4_defconfig) / [rpi4_64](../../../buildroot-external/configs/rpi4_64_defconfig) |
|
||||||
|
|
||||||
|
## Serial console
|
||||||
|
|
||||||
|
For access to terminal over serial console, add `console=ttyAMA0,115200` to `cmdline.txt` and `enable_uart=1`, `dtoverlay=pi3-disable-bt` into `config.txt`. GPIO pins are: 6 = GND / 8 = UART TXD / 10 = UART RXD.
|
||||||
|
|
||||||
|
## I2C
|
||||||
|
|
||||||
|
Add `dtparam=i2c1=on` and `dtparam=i2c_arm=on` to `config.txt`. After that we create a module file on host with [config usb stick][config] or direct into `/etc/modules-load.d`.
|
||||||
|
|
||||||
|
rpi-i2c.conf:
|
||||||
|
```
|
||||||
|
i2c-dev
|
||||||
|
i2c-bcm2708
|
||||||
|
```
|
||||||
|
|
||||||
|
## USB Boot
|
||||||
|
|
||||||
|
USB mass storage boot is available on Raspberry Pi 4 (64-bit only), 3B, 3B+, 3A+, and 2B v1.2.
|
||||||
|
|
||||||
|
For Raspberry 3B, 3A+ and 2B v1.2, to enable USB boot, add `program_usb_boot_mode=1` into `config.txt`. Note that this **permanently** alters the one-time programmable memory of the device.
|
||||||
|
|
||||||
|
For Raspberry 4
|
||||||
|
|
||||||
|
* Make sure to update the bootloader to a stable release supporting USB mass storage boot (see [bcm2711_bootloader_config.md](https://www.raspberrypi.org/documentation/hardware/raspberrypi/bcm2711_bootloader_config.md#usbmassstorageboot)).
|
||||||
|
* If no SD card is used add `sd_poll_once=on` to `dtparam` in `config.txt` (comma separated). This gets rid of `mmc0: timeout waiting for hardware interrupt` kernel errors.
|
||||||
|
* If install still fails, then your SSD likely needs quirks enabled to work correctly (see [Finding the VID and PID of your USB SSD](https://www.raspberrypi.org/forums/viewtopic.php?t=245931)). Once you find your adapter's ID, add the quirks parameter in `cmdline.txt`.
|
||||||
|
|
||||||
|
For more information see [RaspberryPi](https://www.raspberrypi.org/documentation/hardware/raspberrypi/bootmodes/msd.md).
|
||||||
|
|
||||||
|
### Caveats
|
||||||
|
|
||||||
|
* All bootable SD cards must be removed.
|
||||||
|
* Boot time can be significantly longer with USB. This is due to the boot process first attempting to boot from SD card, failing, and resorting to USB.
|
||||||
|
* Many USB drives simply do not work for boot. This is likely due to minimal driver support in uboot and will not be fixed. If you can't get it to boot on one drive, try a different brand/model. SanDisk Cruzer drives seem to have a higher rate of issues.
|
||||||
|
|
||||||
|
## Tweaks
|
||||||
|
|
||||||
|
If you don't need bluetooth, disabled it with add `dtoverlay=pi3-disable-bt` into `config.txt`.
|
||||||
|
|
||||||
|
[config]: ../../configuration.md#automatic
|
@@ -1,17 +0,0 @@
|
|||||||
# Tinker Board
|
|
||||||
|
|
||||||
Supported Hardware:
|
|
||||||
|
|
||||||
| Device | Board |
|
|
||||||
|--------|-----------|
|
|
||||||
| Tinker RK3288 | tinker |
|
|
||||||
| Tinker S RK3288 | tinker |
|
|
||||||
|
|
||||||
## eMMC
|
|
||||||
|
|
||||||
eMMC support is provided transparently. Just flash the image to the eMMC by connecting your Tinker Board S to your PC via Micro-USB.
|
|
||||||
|
|
||||||
## Serial console
|
|
||||||
|
|
||||||
To access the terminal over serial console, add `console=ttyS2,115200` to `cmdline.txt`. GPIO pins are: 34 = GND / 32 = UART TXD / 33 = UART RXD.
|
|
||||||
|
|
@@ -3,7 +3,7 @@
|
|||||||
## Automatic
|
## Automatic
|
||||||
|
|
||||||
You can use an USB drive with HassOS to configure network options, SSH access to the host and to install updates.
|
You can use an USB drive with HassOS to configure network options, SSH access to the host and to install updates.
|
||||||
Format a USB stick with FAT32/EXT4/NTFS and name it `CONFIG` (in all capitals). Alternative you can create a `CONFIG` folder inside boot partition. Use the following directory structure within the USB drive:
|
Format a USB stick with FAT32/EXT4/NTFS and name it `CONFIG` (in all capitals). Alternative you can create a `CONFIG` folder inside the `boot` partition. Use the following directory structure within the USB drive:
|
||||||
|
|
||||||
```text
|
```text
|
||||||
network/
|
network/
|
||||||
@@ -23,8 +23,10 @@ hassos-xy.raucb
|
|||||||
- The `timesyncd.conf` file allow you to set different NTP servers. HassOS won't boot without correct working time servers!
|
- The `timesyncd.conf` file allow you to set different NTP servers. HassOS won't boot without correct working time servers!
|
||||||
- The `hassos-*.raucb` file is a firmware OTA update which will be installed. These can be found on on the [release][hassos-release] page.
|
- The `hassos-*.raucb` file is a firmware OTA update which will be installed. These can be found on on the [release][hassos-release] page.
|
||||||
|
|
||||||
|
Text files that are on USB stick must have Unix (LF) end of line characters. If you create USB stick on Windows machine, be sure to use Notepad++, Visual Studio Code or any other editor, that supports different line endings. In Notepad++ LF EOL can be enabled with setting `Edit -> EOL Conversion -> Unix (LF)`.
|
||||||
|
|
||||||
You can put this USB stick into the device and it will be read on startup and files written to the correct places. You can also trigger this process later over the
|
You can put this USB stick into the device and it will be read on startup and files written to the correct places. You can also trigger this process later over the
|
||||||
API/UI or by calling `systemctl restart hassos-config` on the host. *The USB Stick just needs to be insterted to the device during this setup process and can be disconnected afterwards.*
|
API/UI or by calling `systemctl restart hassos-config` on the host. *The USB Stick just needs to be inserted to the device during this setup process and can be disconnected afterwards.*
|
||||||
|
|
||||||
## Local
|
## Local
|
||||||
|
|
||||||
@@ -47,7 +49,9 @@ You can manual add, edit or remove connections configurations from `/etc/Network
|
|||||||
### NTP
|
### NTP
|
||||||
|
|
||||||
You can manual edit the systemd timesync file on `/etc/systemd/timesyncd.conf`.
|
You can manual edit the systemd timesync file on `/etc/systemd/timesyncd.conf`.
|
||||||
Our default ntp configuration look like:
|
|
||||||
|
Our default NTP configuration look like:
|
||||||
|
|
||||||
```
|
```
|
||||||
[Time]
|
[Time]
|
||||||
NTP=time1.google.com time2.google.com time3.google.com
|
NTP=time1.google.com time2.google.com time3.google.com
|
||||||
@@ -57,4 +61,4 @@ FallbackNTP=0.pool.ntp.org 1.pool.ntp.org 2.pool.ntp.org 3.pool.ntp.org
|
|||||||
[systemd-modules]: https://www.freedesktop.org/software/systemd/man/modules-load.d.html
|
[systemd-modules]: https://www.freedesktop.org/software/systemd/man/modules-load.d.html
|
||||||
[network.md]: network.md
|
[network.md]: network.md
|
||||||
[hassos-release]: https://github.com/home-assistant/hassos/releases/
|
[hassos-release]: https://github.com/home-assistant/hassos/releases/
|
||||||
[debug-homeassistant]: https://developers.home-assistant.io/docs/en/hassio_debugging.html
|
[debug-homeassistant]: https://developers.home-assistant.io/docs/operating-system/debugging
|
||||||
|
@@ -1,22 +0,0 @@
|
|||||||
# Deployment
|
|
||||||
|
|
||||||
We provide 3 different types of release builds:
|
|
||||||
|
|
||||||
- development (beta/dev)
|
|
||||||
- staging (rc)
|
|
||||||
- production (stable)
|
|
||||||
|
|
||||||
## Versioning
|
|
||||||
|
|
||||||
The format of version is *MAJOR.BUILD*. Everytime we create a new release with same userland, we bump the build number.
|
|
||||||
The development number they will be bump for the stable release version and the development version go to next major number.
|
|
||||||
|
|
||||||
## Git branch/Tag
|
|
||||||
|
|
||||||
The branch `dev` ist the actual development branch and from there we never make a release. The `master` branch contains the development version and from there we build a beta release.
|
|
||||||
|
|
||||||
If we create a new staging/productive release, we create a new branch `rel-{MAJOR}`. They will be used for the whole cycle of this release.
|
|
||||||
|
|
||||||
## Upload release files
|
|
||||||
|
|
||||||
We use [ghr](https://github.com/tcnksm/ghr) to upload files to our repository. A binary version is available inside `scripts`.
|
|
@@ -1,29 +0,0 @@
|
|||||||
# Development
|
|
||||||
|
|
||||||
## Boot system
|
|
||||||
|
|
||||||
`BOOT_SYS`:
|
|
||||||
- efi
|
|
||||||
- hyprid
|
|
||||||
- mbr
|
|
||||||
|
|
||||||
HassOS is basicly used GPT. But for use GPT we need own the first 1024 of
|
|
||||||
boot drive. Is that not possible, you can use MBR for your device, they work also with SPLs.
|
|
||||||
|
|
||||||
Hyprid and SPL use both a hyprid MBR/GPT table but SPL move the GPT header 8MB for give space to write SPL and boot images before.
|
|
||||||
|
|
||||||
`BOOT_SPL`:
|
|
||||||
- true
|
|
||||||
- false
|
|
||||||
|
|
||||||
Enable SPL update handling.
|
|
||||||
|
|
||||||
`BOOTLOADER`:
|
|
||||||
- uboot
|
|
||||||
- barebox
|
|
||||||
|
|
||||||
We support mainly uboot but for uefi system we can also use barebox. In future we hope to remove barebox with uboot also on uefi.
|
|
||||||
|
|
||||||
`DISK_SIZE`:
|
|
||||||
Default 2. That is the size of end image in GB.
|
|
||||||
|
|
@@ -1,106 +0,0 @@
|
|||||||
Getting started with Hassos development using Docker on GNU/Linux
|
|
||||||
=================================================================
|
|
||||||
|
|
||||||
First, install **docker** for your distribution - I'd advise to use your distro's provided packages, since that will make sure permissions et al. are sanely set up for what you are about to run. You're also expected to have your current user properly set up in in your sudoers policy, so that this account may elevate to root and execute arbitrary commands as UID 0 (this is required, since at some point during the build process, a new loopback device-backed filesystem image will be mounted inside a docker container - which requires a "privileged" container to run, which can only be done as root).
|
|
||||||
|
|
||||||
Next, make sure the docker daemon is running:
|
|
||||||
|
|
||||||
```
|
|
||||||
$ sudo systemctl status docker
|
|
||||||
● docker.service - Docker Application Container Engine
|
|
||||||
Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
|
|
||||||
Active: inactive (dead)
|
|
||||||
Docs: https://docs.docker.com
|
|
||||||
```
|
|
||||||
|
|
||||||
My desktop distro doesn't start newly installed services by default, which means I'll have to manually fire up the `docker` service:
|
|
||||||
|
|
||||||
```
|
|
||||||
$ sudo systemctl start docker
|
|
||||||
$ sudo systemctl --no-pager status docker -n0
|
|
||||||
● docker.service - Docker Application Container Engine
|
|
||||||
Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
|
|
||||||
Active: active (running) since Wed 2018-10-10 21:08:23 CEST; 25s ago
|
|
||||||
Docs: https://docs.docker.com
|
|
||||||
Main PID: 1531 (dockerd)
|
|
||||||
Tasks: 27 (limit: 4915)
|
|
||||||
Memory: 163.4M
|
|
||||||
CGroup: /system.slice/docker.service
|
|
||||||
├─1531 /usr/bin/dockerd -H fd://
|
|
||||||
└─1539 docker-containerd --config /var/run/docker/containerd/containerd.toml
|
|
||||||
```
|
|
||||||
|
|
||||||
Now, change your working directory to your hassos repo checkout (please adapt pathnames as needed), make sure your intended changes to the source tree are applied (and committed, ideally :)), and execute the `enter.sh` helper script:
|
|
||||||
|
|
||||||
```
|
|
||||||
$ cd ~/codebase/hassos/
|
|
||||||
$ sudo scripts/enter.sh
|
|
||||||
Sending build context to Docker daemon 30.48MB
|
|
||||||
Step 1/6 : FROM ubuntu:18.04
|
|
||||||
[...]
|
|
||||||
---> 4dc25a21556b
|
|
||||||
Successfully built 4dc25a21556b
|
|
||||||
Successfully tagged hassbuildroot:latest
|
|
||||||
```
|
|
||||||
|
|
||||||
Note that the current iteration of `enter.sh` will try to load the **overlayfs** kernel module, which is not strictly required for docker's operation, as far as I can tell. It's OK if loading that module fails; the shell script will continue executing. If everything works out, you will find yourself in an interactive login shell inside your docker container/build environment, where you can peek around:
|
|
||||||
|
|
||||||
```
|
|
||||||
root@somehashinhex:/build#
|
|
||||||
root@somehashinhex:/build# make help
|
|
||||||
[...]
|
|
||||||
```
|
|
||||||
|
|
||||||
The _hassos_ developers provide a Makefile that will build hassos images for a (rather long!) list of targets. For example run the command below to start building the _ova_ variant, and go make a cup of tea. Or fifteen.
|
|
||||||
|
|
||||||
```
|
|
||||||
root@0db6f7079872:/build# make ova
|
|
||||||
[...]
|
|
||||||
```
|
|
||||||
|
|
||||||
That will result in a single VMDK image file at the very end of the build process. This image file is a compressed block device dump with a proper GPT partition table, prepared to ship into any OVA-compatible hypervisor's innards. For me, the end of the **ova** build steps looks like this:
|
|
||||||
|
|
||||||
```
|
|
||||||
[...]
|
|
||||||
2097152+0 records out
|
|
||||||
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 12.2145 s, 87.9 MB/s
|
|
||||||
make: Leaving directory '/build/buildroot'
|
|
||||||
make: Entering directory '/build/buildroot'
|
|
||||||
rm -rf /build/buildroot/output/target /build/buildroot/output/images /build/buildroot/output/host \
|
|
||||||
/build/buildroot/output/build /build/buildroot/output/staging \
|
|
||||||
/build/buildroot/output/legal-info /build/buildroot/output/graphs
|
|
||||||
make: Leaving directory '/build/buildroot'
|
|
||||||
```
|
|
||||||
|
|
||||||
The artifacts you just built are placed in the `target/` subdirectory:
|
|
||||||
|
|
||||||
```
|
|
||||||
root@fd292c061896:/build# ls -lh release/
|
|
||||||
total 141M
|
|
||||||
-rw-r--r-- 1 root root 141M Oct 10 20:22 hassos_ova-2.2.vmdk.gz
|
|
||||||
```
|
|
||||||
|
|
||||||
In order to be able to use this image file with the **qemu** hypervisor, you'll need to unpack it, and convert it to an image format that qemu can work with. Conveniently, the _hassos_ buildenv already provides all the tools we need for this conversion:
|
|
||||||
|
|
||||||
```
|
|
||||||
root@fd292c061896:/build# gunzip release/hassos_ova-2.2.vmdk.gz
|
|
||||||
root@fd292c061896:/build# qemu-img convert -O qcow2 release/hassos_ova-2.2.vmdk release/hassos_ova-2.2.qcow2
|
|
||||||
root@fd292c061896:/build# ls -lh release/
|
|
||||||
total 673M
|
|
||||||
-rw-r--r-- 1 root root 337M Oct 10 20:25 hassos_ova-2.2.qcow2
|
|
||||||
-rw-r--r-- 1 root root 337M Oct 10 20:22 hassos_ova-2.2.vmdk
|
|
||||||
```
|
|
||||||
|
|
||||||
Now, exit the docker container's environment, and find the build artifacts in the `releases/` directory beneath your repository checkout dir. (The generated files will be owned by _root_; make sure to `chown` them to your user account, if needed.)
|
|
||||||
|
|
||||||
From there, qemu can try to boot it. Since the generated image assumes UEFI support in the host/hypervisor, this is slightly more tricky than with "classic"(/legacy) MBR-based images. On the *Debian* host I use to run my qemu virtual machine on, you'll need to install the **ovmf** package, which is described as providing "UEFI firmware for 64-bit x86 virtual machines". That package will install a _TianoCore_-derived qemu UEFI image build at `/usr/share/OVMF/OVMF_CODE.fd`, which we'll use with qemu to boot the generated qcow2 image. (Please adapt pathnames as necessary, for example if you have installed the ovmf firmware image at another location.)
|
|
||||||
|
|
||||||
```
|
|
||||||
$ /usr/bin/qemu-system-x86_64 -enable-kvm -name hassos_ova -smp 2 -m 1024 -drive file=release/hassos_ova-2.2.qcow2,index=0,media=disk,if=ide,cache=none,format=qcow2 -drive file=/usr/share/ovmf/x64/OVMF_CODE.fd,if=pflash,format=raw,readonly=on
|
|
||||||
```
|
|
||||||
|
|
||||||
This should pop up qemu's SDL frontend, displaying _hassos_' VT/CLI environment. Specifying addtional options and flags to qemu for network access, keyboard layout et al. are left as an exercise for the reader.
|
|
||||||
|
|
||||||
After the boot process has finished, you can log in to _hassos_ without a password, providing *root* as the username. From there, executing `login` on the *ha>* shell prompt will yield a root shell in the host OS.
|
|
||||||
|
|
||||||
Happy hacking! :)
|
|
@@ -1,14 +1,22 @@
|
|||||||
|
|
||||||
# Kernel Version
|
# Kernel Version
|
||||||
|
|
||||||
Default Kernel tree: 5.4
|
Default Kernel tree: 5.15
|
||||||
|
|
||||||
| Board | Version |
|
| Board | Version |
|
||||||
|-------|---------|
|
|-------|---------|
|
||||||
| Open Virtual Applicance | 5.4.18 |
|
| Open Virtual Appliance | 5.15.38 |
|
||||||
| Raspberry Pi | 4.19.93 |
|
| Raspberry Pi | 5.15.32 |
|
||||||
| Tinker Board | 4.19.88 |
|
| Raspberry Pi 0-W | 5.15.32 |
|
||||||
| Odroid-C2 | 5.4.18 |
|
| Raspberry Pi 2 | 5.15.32 |
|
||||||
| Odroid-N2 | 5.4.18 |
|
| Raspberry Pi 3 | 5.15.32 |
|
||||||
| Odroid-XU4 | 5.4.18 |
|
| Raspberry Pi 4 | 5.15.32 |
|
||||||
| Intel NUC | 5.4.18 |
|
| Home Assistant Yellow | 5.15.32 |
|
||||||
|
| Tinker Board | 5.15.38 |
|
||||||
|
| Odroid-C2 | 5.15.38 |
|
||||||
|
| Odroid-C4 | 5.15.38 |
|
||||||
|
| Odroid-N2 | 5.15.38 |
|
||||||
|
| Odroid-XU4 | 5.15.38 |
|
||||||
|
| Generic aarch64 | 5.15.38 |
|
||||||
|
| Generic x86-64 | 5.15.38 |
|
||||||
|
| Khadas VIM3 | 5.15.38 |
|
||||||
|
@@ -1,21 +1,52 @@
|
|||||||
# Network
|
# Network
|
||||||
|
|
||||||
## Configure Network
|
Home Assistant Operating System uses NetworkManager to control the host network.
|
||||||
HassOS uses NetworkManager to control the host network. In future releases, you will be able to set up the configuration using the API/UI. Currently only a manual configuration using NetworkManager connection files is supported. Without a configuration file, the device will use DHCP by default. These network connection files can be placed on a USB drive and imported to the host as described in [Configuration][configuration-usb].
|
|
||||||
|
|
||||||
## Configuration Examples
|
## Configure network
|
||||||
|
|
||||||
You can read the [Official Manual][keyfile] or find many configuration examples across the internet. The system is read-only, if you don't want the IP address to change on every boot, you should set the UUID property with a generic [UUID4][uuid]. Inside `\CONFIG\network\` on the USB or SD, create a file called `my-network` and add the appropriate contents below:
|
By default the device will be in DHCP state.
|
||||||
|
|
||||||
|
Basic network settings can be set through the Supervisor frontend in the System
|
||||||
|
tab. Advanced configurations such as VLAN are also available through the
|
||||||
|
`ha network` CLI command.
|
||||||
|
|
||||||
|
To restore the default configuration the `ha network` CLI command can be used as
|
||||||
|
well:
|
||||||
|
|
||||||
|
```
|
||||||
|
ha network update default --ipv4-method auto
|
||||||
|
```
|
||||||
|
|
||||||
|
If more advanced network settings are required network connection files can be
|
||||||
|
placed on a USB drive and imported to the host as described in
|
||||||
|
[Configuration][configuration-usb].
|
||||||
|
|
||||||
|
## Manual Network Configuration
|
||||||
|
|
||||||
|
If the frontend or `ha network` CLI cannot meet your use case, it is still
|
||||||
|
possible to configure the underlying NetworkManager manually.
|
||||||
|
|
||||||
|
You can read the [NetworkManager manual][nm-manual] or find many configuration
|
||||||
|
examples across the internet. Note that changes to `NetworkManager.conf` are
|
||||||
|
not supported currently, only connection keyfiles are supported. Keep in mind
|
||||||
|
that the system is read-only. If you don't want the IP address to change on
|
||||||
|
every boot, you should modify the UUID property to a generic [UUID4][uuid].
|
||||||
|
Inside the `\CONFIG\network\` directory on the USB drive or SD card, create a
|
||||||
|
file called `my-network` and add the appropriate contents below:
|
||||||
|
|
||||||
|
**NOTE: Please make sure to save this file with UNIX line endings (LF, and not Windows' default CRLF endings). You can do this using Notepad these days!**
|
||||||
|
|
||||||
### Default
|
### Default
|
||||||
|
|
||||||
We have a preinstalled connection profile:
|
A preinstalled connection profile for wired network is active by default:
|
||||||
|
|
||||||
```ini
|
```ini
|
||||||
[connection]
|
[connection]
|
||||||
id=my-network
|
id=Home Assistant OS default
|
||||||
uuid=f62bf7c2-e565-49ff-bbfc-a4cf791e6add
|
uuid=f62bf7c2-e565-49ff-bbfc-a4cf791e6add
|
||||||
type=802-3-ethernet
|
type=802-3-ethernet
|
||||||
|
llmnr=2
|
||||||
|
mdns=2
|
||||||
|
|
||||||
[ipv4]
|
[ipv4]
|
||||||
method=auto
|
method=auto
|
||||||
@@ -25,13 +56,15 @@ addr-gen-mode=stable-privacy
|
|||||||
method=auto
|
method=auto
|
||||||
```
|
```
|
||||||
|
|
||||||
### LAN
|
### Wired connection to the LAN
|
||||||
|
|
||||||
```ini
|
```ini
|
||||||
[connection]
|
[connection]
|
||||||
id=my-network
|
id=my-network
|
||||||
uuid=d55162b4-6152-4310-9312-8f4c54d86afa
|
uuid=d55162b4-6152-4310-9312-8f4c54d86afa
|
||||||
type=802-3-ethernet
|
type=802-3-ethernet
|
||||||
|
llmnr=2
|
||||||
|
mdns=2
|
||||||
|
|
||||||
[ipv4]
|
[ipv4]
|
||||||
method=auto
|
method=auto
|
||||||
@@ -41,7 +74,7 @@ addr-gen-mode=stable-privacy
|
|||||||
method=auto
|
method=auto
|
||||||
```
|
```
|
||||||
|
|
||||||
### Wireless WPA/PSK
|
### Wireless LAN WPA/PSK
|
||||||
|
|
||||||
```ini
|
```ini
|
||||||
[connection]
|
[connection]
|
||||||
@@ -78,68 +111,83 @@ method=manual
|
|||||||
address=192.168.1.111/24;192.168.1.1
|
address=192.168.1.111/24;192.168.1.1
|
||||||
dns=8.8.8.8;8.8.4.4;
|
dns=8.8.8.8;8.8.4.4;
|
||||||
```
|
```
|
||||||
For address, the value before the semicolon is the IP address and subnet prefix bitlength; the second value is the IP address of the gateway.
|
|
||||||
|
For `address`, the value before the semicolon is the IP address and subnet prefix bitlength. The second value (after the semicolon) is the IP address of the local gateway.
|
||||||
|
|
||||||
## Tips
|
## Tips
|
||||||
|
|
||||||
### Reset network
|
### Reset network
|
||||||
|
|
||||||
If you want to reset the network configuration back to the default DHCP settings, use the following commands on the host:
|
If you want to reset the network configuration back to the default connection
|
||||||
|
profile using DHCP, use the following commands on the host console:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ rm /etc/NetworkManager/system-connections/*
|
# rm -r /mnt/overlay/etc/NetworkManager/system-connections
|
||||||
$ cp /usr/share/system-connections/* /etc/NetworkManager/system-connections/
|
# reboot
|
||||||
$ nmcli con reload
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Home Assistant OS will recreate the default connection profile during boot.
|
||||||
|
|
||||||
|
### Enabling WiFi
|
||||||
|
|
||||||
|
WiFi is discouraged for reliability reasons. However if you're still like to use WiFi, you can us the `ha network` command to set up WiFi (example for a Raspberry Pi 4, check `ha network info` to check if your board supports WiFi and the name of the WiFi device):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ha network update wlan0 --enabled --ipv4-method auto --wifi-auth wpa-psk --wifi-mode infrastructure --wifi-ssid MY-SSID --wifi-psk MY_PASS
|
||||||
|
````
|
||||||
|
|
||||||
### Powersave
|
### Powersave
|
||||||
|
|
||||||
If you have trouble with powersave you can do following:
|
If you have trouble with powersave then apply the following changes:
|
||||||
|
|
||||||
```ini
|
```ini
|
||||||
[wifi]
|
[wifi]
|
||||||
# Values are 0 (use default), 1 (ignore/don't touch), 2 (disable) or 3 (enable).
|
# Values are 0 (use default), 1 (ignore/don't touch), 2 (disable) or 3 (enable).
|
||||||
powersave=0
|
powersave=0
|
||||||
```
|
```
|
||||||
## Using nmcli to set a static IPV4 address
|
|
||||||
|
|
||||||
Log into the HASSOS base system via a console:
|
## Using `nmcli` to set a static IPv4 address
|
||||||
|
|
||||||
```
|
Log into the the Home Assistant OS base system via a console:
|
||||||
|
|
||||||
|
```bash
|
||||||
Welcome to Home Assistant
|
Welcome to Home Assistant
|
||||||
homeassistant login:
|
homeassistant login:
|
||||||
```
|
```
|
||||||
Login as `root` (no password needed)
|
|
||||||
|
|
||||||
At the `ha >` prompt, type `login` (as instructed).
|
- Login as `root` (no password needed). At the `ha >` prompt, type `login` (as instructed).
|
||||||
|
|
||||||
From here you will use the `nmcli` configuration tool.
|
From there you use the `nmcli` configuration tool.
|
||||||
|
|
||||||
`# nmcli connection show` will list the “HassOS default” connection in use.
|
- `# nmcli con show` will list the "Home Assistant OS default" connection in use.
|
||||||
|
- `# nmcli con show "Home Assistant OS default"` will list all the properties of the connection.
|
||||||
|
|
||||||
`# nmcli con show "HassOS default"` will list all the properties of the connection.
|
To start editing the configuration setting for "Home Assistant OS default":
|
||||||
|
|
||||||
`# nmcli con edit "HassOS default"` will put you in a position to edit the connection.
|
```bash
|
||||||
|
# nmcli con edit "Home Assistant OS default"
|
||||||
`nmcli> print ipv4` will show you the ipv4 properties of this connection.
|
```
|
||||||
|
|
||||||
To add your static IP address (select 'yes' for manual method);
|
To add your static IP address (select 'yes' for manual method);
|
||||||
```
|
|
||||||
|
```bash
|
||||||
nmcli> set ipv4.addresses 192.168.100.10/24
|
nmcli> set ipv4.addresses 192.168.100.10/24
|
||||||
Do you also want to set 'ipv4.method' to 'manual'? [yes]:
|
Do you also want to set 'ipv4.method' to 'manual'? [yes]:
|
||||||
```
|
```
|
||||||
In addition I have found it is wise to set the dns server and the local gateway. For most home routers these will be the same address. If you are using Pi-Hole you can set the dns to that.
|
|
||||||
```
|
In addition, it's recommended to set the DNS server and the local gateway. For most home routers the DNS server will have the same IP address as the router itself. If you are using Pi-Hole or a third-party DNS system then you can set the DNS server to that.
|
||||||
|
|
||||||
|
```bash
|
||||||
nmcli> set ipv4.dns 192.168.100.1
|
nmcli> set ipv4.dns 192.168.100.1
|
||||||
nmcli> set ipv4.gateway 192.168.100.1
|
nmcli> set ipv4.gateway 192.168.100.1
|
||||||
nmcli> save
|
|
||||||
nmcli> quit
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
`nmcli> print ipv4` will show you the IPv4 properties of this connection. With `nmcli> save` you will save the changes afterwards.
|
||||||
|
|
||||||
If you now view the default connection `cat /etc/NetworkManager/system-connections/default` you should see the method is manual and the address is set.
|
If you now view the default connection `cat /etc/NetworkManager/system-connections/default` you should see the method is manual and the address is set.
|
||||||
|
|
||||||
Doing a `nmcli con reload` does not always work so restart the VM.
|
Doing a `nmcli con reload` does not always work, so restart the virtual machine or the physical system.
|
||||||
|
|
||||||
[keyfile]: https://developer.gnome.org/NetworkManager/stable/nm-settings.html
|
[nm-manual]: https://developer.gnome.org/NetworkManager/stable/manpages.html
|
||||||
[configuration-usb]: configuration.md
|
[configuration-usb]: configuration.md
|
||||||
[uuid]: https://www.uuidgenerator.net/
|
[uuid]: https://www.uuidgenerator.net/
|
||||||
|
BIN
Documentation/usb-disk.png
Normal file
BIN
Documentation/usb-disk.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 67 KiB |
30
Makefile
30
Makefile
@@ -1,12 +1,22 @@
|
|||||||
RELEASE_DIR = /build/release
|
BUILDDIR:=$(shell pwd)
|
||||||
|
RELEASE_DIR = $(BUILDDIR)/release
|
||||||
|
|
||||||
BUILDROOT=/build/buildroot
|
BUILDROOT=$(BUILDDIR)/buildroot
|
||||||
BUILDROOT_EXTERNAL=/build/buildroot-external
|
BUILDROOT_EXTERNAL=$(BUILDDIR)/buildroot-external
|
||||||
DEFCONFIG_DIR = $(BUILDROOT_EXTERNAL)/configs
|
DEFCONFIG_DIR = $(BUILDROOT_EXTERNAL)/configs
|
||||||
|
VERSION_DATE := $(shell date --utc +'%Y%m%d')
|
||||||
|
VERSION_DEV := "dev$(VERSION_DATE)"
|
||||||
|
|
||||||
TARGETS := $(notdir $(patsubst %_defconfig,%,$(wildcard $(DEFCONFIG_DIR)/*_defconfig)))
|
TARGETS := $(notdir $(patsubst %_defconfig,%,$(wildcard $(DEFCONFIG_DIR)/*_defconfig)))
|
||||||
TARGETS_CONFIG := $(notdir $(patsubst %_defconfig,%-config,$(wildcard $(DEFCONFIG_DIR)/*_defconfig)))
|
TARGETS_CONFIG := $(notdir $(patsubst %_defconfig,%-config,$(wildcard $(DEFCONFIG_DIR)/*_defconfig)))
|
||||||
|
|
||||||
|
# Set O variable if not already done on the command line
|
||||||
|
ifneq ("$(origin O)", "command line")
|
||||||
|
O := $(BUILDDIR)/output
|
||||||
|
else
|
||||||
|
override O := $(BUILDDIR)/$(O)
|
||||||
|
endif
|
||||||
|
|
||||||
.NOTPARALLEL: $(TARGETS) $(TARGETS_CONFIG) all
|
.NOTPARALLEL: $(TARGETS) $(TARGETS_CONFIG) all
|
||||||
|
|
||||||
.PHONY: $(TARGETS) $(TARGETS_CONFIG) all clean help
|
.PHONY: $(TARGETS) $(TARGETS_CONFIG) all clean help
|
||||||
@@ -16,24 +26,28 @@ all: $(TARGETS)
|
|||||||
$(RELEASE_DIR):
|
$(RELEASE_DIR):
|
||||||
mkdir -p $(RELEASE_DIR)
|
mkdir -p $(RELEASE_DIR)
|
||||||
|
|
||||||
|
savedefconfig:
|
||||||
|
@echo "config $*"
|
||||||
|
$(MAKE) -C $(BUILDROOT) O=$(O) BR2_EXTERNAL=$(BUILDROOT_EXTERNAL) "savedefconfig"
|
||||||
|
|
||||||
$(TARGETS_CONFIG): %-config:
|
$(TARGETS_CONFIG): %-config:
|
||||||
@echo "config $*"
|
@echo "config $*"
|
||||||
$(MAKE) -C $(BUILDROOT) BR2_EXTERNAL=$(BUILDROOT_EXTERNAL) "$*_defconfig"
|
$(MAKE) -C $(BUILDROOT) O=$(O) BR2_EXTERNAL=$(BUILDROOT_EXTERNAL) "$*_defconfig"
|
||||||
|
|
||||||
$(TARGETS): %: $(RELEASE_DIR) %-config
|
$(TARGETS): %: $(RELEASE_DIR) %-config
|
||||||
@echo "build $@"
|
@echo "build $@"
|
||||||
$(MAKE) -C $(BUILDROOT) BR2_EXTERNAL=$(BUILDROOT_EXTERNAL)
|
$(MAKE) -C $(BUILDROOT) O=$(O) BR2_EXTERNAL=$(BUILDROOT_EXTERNAL) VERSION_DEV=$(VERSION_DEV)
|
||||||
cp -f $(BUILDROOT)/output/images/hassos_* $(RELEASE_DIR)/
|
cp -f $(O)/images/haos_* $(RELEASE_DIR)/
|
||||||
|
|
||||||
# Do not clean when building for one target
|
# Do not clean when building for one target
|
||||||
ifneq ($(words $(filter $(TARGETS),$(MAKECMDGOALS))), 1)
|
ifneq ($(words $(filter $(TARGETS),$(MAKECMDGOALS))), 1)
|
||||||
@echo "clean $@"
|
@echo "clean $@"
|
||||||
$(MAKE) -C $(BUILDROOT) BR2_EXTERNAL=$(BUILDROOT_EXTERNAL) clean
|
$(MAKE) -C $(BUILDROOT) O=$(O) BR2_EXTERNAL=$(BUILDROOT_EXTERNAL) clean
|
||||||
endif
|
endif
|
||||||
@echo "finished $@"
|
@echo "finished $@"
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
$(MAKE) -C $(BUILDROOT) BR2_EXTERNAL=$(BUILDROOT_EXTERNAL) clean
|
$(MAKE) -C $(BUILDROOT) O=$(O) BR2_EXTERNAL=$(BUILDROOT_EXTERNAL) clean
|
||||||
|
|
||||||
help:
|
help:
|
||||||
@echo "Supported targets: $(TARGETS)"
|
@echo "Supported targets: $(TARGETS)"
|
||||||
|
67
README.md
67
README.md
@@ -1,15 +1,58 @@
|
|||||||
[](https://dev.azure.com/home-assistant/Hass.io/_build/latest?definitionId=13&branchName=dev)
|
# Home Assistant Operating System
|
||||||
|
|
||||||
# HassOS
|
Home Assistant Operating System (formerly HassOS) is a Linux based operating system optimized to host [Home Assistant](https://www.home-assistant.io) and its [Add-ons](https://www.home-assistant.io/addons/).
|
||||||
Hass.io OS based on [buildroot](https://buildroot.org/). It's a hypervisor for Docker and supports various kind of IoT hardware. It is also available as virtual appliance. The whole system is optimized for embedded system and security. You can update the system simple with OTA updates or offline updates.
|
|
||||||
|
|
||||||
## Focus
|
Home Assistant Operating System uses Docker as Container engine. It by default deploys the Home Assistant Supervisor as a container. Home Assistant Supervisor in turn uses the Docker container engine to control Home Assistant Core and Add-Ons in separate containers. Home Assistant Operating System is **not** based on a regular Linux distribution like Ubuntu. It is built using [Buildroot](https://buildroot.org/) and it is optimized to run Home Assistant. It targets single board compute (SBC) devices like the Raspberry Pi or ODROID but also supports x86-64 systems with UEFI.
|
||||||
|
|
||||||
- Barebox as bootloader on EFI
|
## Features
|
||||||
- U-Boot as bootloader on IoT
|
|
||||||
- Linux/Buildroot LTS
|
- Lightweight and memory-efficient
|
||||||
- RAUC for OTA updates
|
- Minimized I/O
|
||||||
- SquashFS LZ4 as filesystem
|
- Over The Air (OTA) updates
|
||||||
- Docker-CE
|
- Offline updates
|
||||||
- AppArmor protected
|
- Modular using Docker container engine
|
||||||
- ZRAM LZ4 for /tmp, /var, swap
|
|
||||||
|
## Supported hardware
|
||||||
|
|
||||||
|
- Raspberry Pi
|
||||||
|
- Hardkernel ODROID
|
||||||
|
- Asus Tinker Board
|
||||||
|
- Generic x86-64 (e.g. Intel NUC)
|
||||||
|
- Virtual appliances
|
||||||
|
|
||||||
|
See the full list and specific models [here](./Documentation/boards/README.md)
|
||||||
|
|
||||||
|
## Getting Started
|
||||||
|
|
||||||
|
If you just want to use Home Assistant the official [getting started guide](https://www.home-assistant.io/getting-started/) and [installation instructions](https://www.home-assistant.io/hassio/installation/) take you through how to download Home Assistant Operating System and get it running on your machine.
|
||||||
|
|
||||||
|
If you're interested in finding out more about Home Assistant Operating System and how it works read on...
|
||||||
|
|
||||||
|
## Development
|
||||||
|
|
||||||
|
If you don't have experience with embedded systems, Buildroot or the build process for Linux distributions it is recommended to read up on these topics first (e.g. [Bootlin](https://bootlin.com/docs/) has excellent resources).
|
||||||
|
|
||||||
|
The Home Assistant Operating System documentation can be found on the [Home Assistant Developer Docs website](https://developers.home-assistant.io/docs/operating-system).
|
||||||
|
|
||||||
|
### Components
|
||||||
|
|
||||||
|
- **Bootloader:**
|
||||||
|
- [Barebox](https://barebox.org/) for devices that support UEFI
|
||||||
|
- [U-Boot](https://www.denx.de/wiki/U-Boot) for devices that don't support UEFI
|
||||||
|
- **Operating System:**
|
||||||
|
- [Buildroot](https://buildroot.org/) LTS Linux
|
||||||
|
- **File Systems:**
|
||||||
|
- [SquashFS](https://www.kernel.org/doc/Documentation/filesystems/squashfs.txt) for read-only file systems (using LZ4 compression)
|
||||||
|
- [ZRAM](https://www.kernel.org/doc/Documentation/blockdev/zram.txt) for `/tmp`, `/var` and swap (using LZ4 compression)
|
||||||
|
- **Container Platform:**
|
||||||
|
- [Docker Engine](https://docs.docker.com/engine/) for running Home Assistant components in containers
|
||||||
|
- **Updates:**
|
||||||
|
- [RAUC](https://rauc.io/) for Over The Air (OTA) and USB updates
|
||||||
|
- **Security:**
|
||||||
|
- [AppArmor](https://apparmor.net/) Linux kernel security module
|
||||||
|
|
||||||
|
### Development builds
|
||||||
|
|
||||||
|
The Development build GitHub Action Workflow is a manually triggered workflow
|
||||||
|
which creates Home Assistant OS development builds. The development builds are
|
||||||
|
available at [os-builds.home-assistant.io](https://os-builds.home-assistant.io/).
|
||||||
|
@@ -1,49 +0,0 @@
|
|||||||
# https://dev.azure.com/home-assistant
|
|
||||||
|
|
||||||
trigger:
|
|
||||||
batch: true
|
|
||||||
branches:
|
|
||||||
include:
|
|
||||||
- dev
|
|
||||||
pr:
|
|
||||||
- dev
|
|
||||||
|
|
||||||
variables:
|
|
||||||
- name: versionHadolint
|
|
||||||
value: 'v1.17.2'
|
|
||||||
- name: versionShellCheck
|
|
||||||
value: 'v0.7.0'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
|
|
||||||
- job: 'Hadolint'
|
|
||||||
pool:
|
|
||||||
vmImage: 'ubuntu-16.04'
|
|
||||||
steps:
|
|
||||||
- script: |
|
|
||||||
sudo docker pull hadolint/hadolint:$(versionHadolint)
|
|
||||||
displayName: 'Install Hadolint'
|
|
||||||
- script: |
|
|
||||||
sudo docker run --rm -i \
|
|
||||||
-v $(pwd)/.hadolint.yaml:/.hadolint.yaml:ro \
|
|
||||||
hadolint/hadolint:$(versionHadolint) < Dockerfile
|
|
||||||
displayName: 'Run Hadolint'
|
|
||||||
|
|
||||||
|
|
||||||
- job: 'ShellCheck'
|
|
||||||
pool:
|
|
||||||
vmImage: 'ubuntu-16.04'
|
|
||||||
steps:
|
|
||||||
- script: |
|
|
||||||
sudo docker pull koalaman/shellcheck:$(versionShellCheck)
|
|
||||||
displayName: 'Install ShellCheck'
|
|
||||||
- script: |
|
|
||||||
sudo docker run --rm -i \
|
|
||||||
-v $(pwd):/mnt:ro koalaman/shellcheck:$(versionShellCheck) \
|
|
||||||
scripts/*.sh \
|
|
||||||
buildroot-external/scripts/*.sh \
|
|
||||||
buildroot-external/board/**/*.sh \
|
|
||||||
buildroot-external/rootfs-overlay/usr/sbin/* \
|
|
||||||
buildroot-external/rootfs-overlay/usr/libexec/* \
|
|
||||||
buildroot-external/rootfs-overlay/usr/lib/rauc/*
|
|
||||||
displayName: 'Run ShellCheck'
|
|
@@ -1,95 +0,0 @@
|
|||||||
# https://dev.azure.com/home-assistant
|
|
||||||
|
|
||||||
trigger:
|
|
||||||
batch: true
|
|
||||||
tags:
|
|
||||||
include:
|
|
||||||
- '*'
|
|
||||||
exclude:
|
|
||||||
- untagged*
|
|
||||||
pr: none
|
|
||||||
|
|
||||||
variables:
|
|
||||||
- name: versionGHR
|
|
||||||
value: 'v0.13.0'
|
|
||||||
- group: github
|
|
||||||
- group: rauc
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
|
|
||||||
- job: 'VersionValidate'
|
|
||||||
condition: startsWith(variables['Build.SourceBranch'], 'refs/tags')
|
|
||||||
pool:
|
|
||||||
vmImage: 'ubuntu-latest'
|
|
||||||
steps:
|
|
||||||
- script: |
|
|
||||||
. buildroot-external/meta
|
|
||||||
|
|
||||||
if [ "${VERSION_MAJOR}.${VERSION_BUILD}" != "$(Build.SourceBranchName)" ]; then
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
displayName: 'Check version of branch/tag'
|
|
||||||
|
|
||||||
|
|
||||||
- job: 'Release'
|
|
||||||
dependsOn:
|
|
||||||
- 'VersionValidate'
|
|
||||||
timeoutInMinutes: 240
|
|
||||||
pool:
|
|
||||||
name: 'Buildroot'
|
|
||||||
strategy:
|
|
||||||
maxParallel: 1
|
|
||||||
matrix:
|
|
||||||
OpenVirtualAppliance:
|
|
||||||
board: 'ova'
|
|
||||||
IntelNuc:
|
|
||||||
board: 'intel_nuc'
|
|
||||||
OdroidC2:
|
|
||||||
board: 'odroid_c2'
|
|
||||||
OdroidN2:
|
|
||||||
board: 'odroid_n2'
|
|
||||||
OdroidXU4:
|
|
||||||
board: 'odroid_xu4'
|
|
||||||
RaspberryPi:
|
|
||||||
board: 'rpi'
|
|
||||||
RaspberryPi0-W:
|
|
||||||
board: 'rpi0_w'
|
|
||||||
RaspberryPi2:
|
|
||||||
board: 'rpi2'
|
|
||||||
RaspberryPi3:
|
|
||||||
board: 'rpi3'
|
|
||||||
RaspberryPi3-64:
|
|
||||||
board: 'rpi3_64'
|
|
||||||
RaspberryPi4:
|
|
||||||
board: 'rpi4'
|
|
||||||
RaspberryPi4-64:
|
|
||||||
board: 'rpi4_64'
|
|
||||||
AsusTinker:
|
|
||||||
board: 'tinker'
|
|
||||||
workspace:
|
|
||||||
clean: 'all'
|
|
||||||
steps:
|
|
||||||
- script: |
|
|
||||||
echo -e "-----BEGIN CERTIFICATE-----\n$(releaseCertificate)\n-----END CERTIFICATE-----" > cert.pem
|
|
||||||
echo -e "-----BEGIN PRIVATE KEY-----\n$(releaseKey)\n-----END PRIVATE KEY-----" > key.pem
|
|
||||||
displayName: 'Add release PKI certs'
|
|
||||||
- script: |
|
|
||||||
sudo docker build -t hassos:azure .
|
|
||||||
displayName: 'Build container for HassOS'
|
|
||||||
- script: |
|
|
||||||
curl -SsL https://github.com/tcnksm/ghr/releases/download/$(versionGHR)/ghr_$(versionGHR)_linux_amd64.tar.gz | tar xzf -
|
|
||||||
cp ghr_$(versionGHR)_linux_amd64/ghr .
|
|
||||||
rm -rf ghr_$(versionGHR)_linux_amd64
|
|
||||||
displayName: 'Install GHR'
|
|
||||||
- script: |
|
|
||||||
BUILDER_UID="$(id -u)"
|
|
||||||
BUILDER_GID="$(id -g)"
|
|
||||||
|
|
||||||
sudo docker run --rm --privileged -v "$(pwd):/build" \
|
|
||||||
-e BUILDER_UID="${BUILDER_UID}" -e BUILDER_GID="${BUILDER_GID}" \
|
|
||||||
-v "/mnt/build-cache:/cache" \
|
|
||||||
hassos:azure make $(board)
|
|
||||||
displayName: 'Build $(board)'
|
|
||||||
- script: |
|
|
||||||
./ghr -t $(githubToken) $(Build.SourceBranchName) release/
|
|
||||||
displayName: 'Upload $(board)'
|
|
1
buildroot
Submodule
1
buildroot
Submodule
Submodule buildroot added at ee56159464
@@ -1,7 +1,16 @@
|
|||||||
source "$BR2_EXTERNAL_HASSOS_PATH/package/hassos/Config.in"
|
|
||||||
source "$BR2_EXTERNAL_HASSOS_PATH/package/libapparmor/Config.in"
|
|
||||||
source "$BR2_EXTERNAL_HASSOS_PATH/package/apparmor/Config.in"
|
|
||||||
source "$BR2_EXTERNAL_HASSOS_PATH/package/bluetooth-bcm43xx/Config.in"
|
|
||||||
source "$BR2_EXTERNAL_HASSOS_PATH/package/bluetooth-rtl8723/Config.in"
|
source "$BR2_EXTERNAL_HASSOS_PATH/package/bluetooth-rtl8723/Config.in"
|
||||||
|
source "$BR2_EXTERNAL_HASSOS_PATH/package/eq3_char_loop/Config.in"
|
||||||
|
source "$BR2_EXTERNAL_HASSOS_PATH/package/gasket/Config.in"
|
||||||
|
source "$BR2_EXTERNAL_HASSOS_PATH/package/generic_raw_uart/Config.in"
|
||||||
source "$BR2_EXTERNAL_HASSOS_PATH/package/hardkernel-boot/Config.in"
|
source "$BR2_EXTERNAL_HASSOS_PATH/package/hardkernel-boot/Config.in"
|
||||||
|
source "$BR2_EXTERNAL_HASSOS_PATH/package/hassio/Config.in"
|
||||||
|
source "$BR2_EXTERNAL_HASSOS_PATH/package/khadas-boot/Config.in"
|
||||||
|
source "$BR2_EXTERNAL_HASSOS_PATH/package/os-agent/Config.in"
|
||||||
|
source "$BR2_EXTERNAL_HASSOS_PATH/package/pi-bluetooth/Config.in"
|
||||||
source "$BR2_EXTERNAL_HASSOS_PATH/package/qemu-guest-agent/Config.in"
|
source "$BR2_EXTERNAL_HASSOS_PATH/package/qemu-guest-agent/Config.in"
|
||||||
|
source "$BR2_EXTERNAL_HASSOS_PATH/package/rpi-eeprom/Config.in"
|
||||||
|
source "$BR2_EXTERNAL_HASSOS_PATH/package/rpi-rf-mod/Config.in"
|
||||||
|
source "$BR2_EXTERNAL_HASSOS_PATH/package/rtl88x2bu/Config.in"
|
||||||
|
source "$BR2_EXTERNAL_HASSOS_PATH/package/tempio/Config.in.host"
|
||||||
|
source "$BR2_EXTERNAL_HASSOS_PATH/package/udisks2/Config.in"
|
||||||
|
source "$BR2_EXTERNAL_HASSOS_PATH/package/xe-guest-utilities/Config.in"
|
||||||
|
@@ -0,0 +1 @@
|
|||||||
|
console=tty1 console=ttyS0
|
59
buildroot-external/board/arm-uefi/generic-aarch64/grub.cfg
Normal file
59
buildroot-external/board/arm-uefi/generic-aarch64/grub.cfg
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
set default=99
|
||||||
|
set timeout=1
|
||||||
|
|
||||||
|
set ORDER="A B"
|
||||||
|
set A_OK=0
|
||||||
|
set B_OK=0
|
||||||
|
set A_TRY=0
|
||||||
|
set B_TRY=0
|
||||||
|
set MACHINE_ID=""
|
||||||
|
load_env
|
||||||
|
|
||||||
|
# select bootable slot
|
||||||
|
for SLOT in $ORDER; do
|
||||||
|
if [ "$SLOT" == "A" ]; then
|
||||||
|
INDEX=0
|
||||||
|
OK=$A_OK
|
||||||
|
TRY=$A_TRY
|
||||||
|
A_TRY=1
|
||||||
|
fi
|
||||||
|
if [ "$SLOT" == "B" ]; then
|
||||||
|
INDEX=1
|
||||||
|
OK=$B_OK
|
||||||
|
TRY=$B_TRY
|
||||||
|
B_TRY=1
|
||||||
|
fi
|
||||||
|
if [ "$OK" -eq 1 -a "$TRY" -eq 0 ]; then
|
||||||
|
default=$INDEX
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# reset booted flags
|
||||||
|
if [ "$default" -eq 99 ]; then
|
||||||
|
if [ "$A_OK" -eq 1 -a "$A_TRY" -eq 1 ]; then
|
||||||
|
A_TRY=0
|
||||||
|
fi
|
||||||
|
if [ "$B_OK" -eq 1 -a "$B_TRY" -eq 1 ]; then
|
||||||
|
B_TRY=0
|
||||||
|
fi
|
||||||
|
default=0
|
||||||
|
fi
|
||||||
|
|
||||||
|
save_env A_TRY A_OK B_TRY B_OK ORDER MACHINE_ID
|
||||||
|
|
||||||
|
default_cmdline="rootwait zram.enabled=1 zram.num_devices=3 apparmor=1 security=apparmor systemd.machine_id=$MACHINE_ID cgroup_enable=memory fsck.repair=yes"
|
||||||
|
file_env -f ($root)/cmdline.txt cmdline
|
||||||
|
|
||||||
|
# root is a full HDD/partition definition in GRUB format like hd0,gpt1
|
||||||
|
# We extract the part before the comma to then append our own partition index
|
||||||
|
# at the end. This is hacky but the best way I found
|
||||||
|
regexp --set 1:boothd (.+),.+ ${root}
|
||||||
|
|
||||||
|
menuentry "Slot A (OK=$A_OK TRY=$A_TRY)" {
|
||||||
|
linux (${boothd},gpt2)/Image root=PARTUUID=8d3d53e3-6d49-4c38-8349-aff6859e82fd $default_cmdline $cmdline rauc.slot=A
|
||||||
|
}
|
||||||
|
|
||||||
|
menuentry "Slot B (OK=$B_OK TRY=$B_TRY)" {
|
||||||
|
linux (${boothd},gpt4)/Image root=PARTUUID=a3ec664e-32ce-4665-95ea-7ae90ce9aa20 $default_cmdline $cmdline rauc.slot=B
|
||||||
|
}
|
27
buildroot-external/board/arm-uefi/generic-aarch64/hassos-hook.sh
Executable file
27
buildroot-external/board/arm-uefi/generic-aarch64/hassos-hook.sh
Executable file
@@ -0,0 +1,27 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# shellcheck disable=SC2155
|
||||||
|
|
||||||
|
function hassos_pre_image() {
|
||||||
|
local BOOT_DATA="$(path_boot_dir)"
|
||||||
|
local EFIPART_DATA="${BINARIES_DIR}/efi-part"
|
||||||
|
|
||||||
|
mkdir -p "${BOOT_DATA}/EFI/BOOT"
|
||||||
|
|
||||||
|
cp "${BOARD_DIR}/grub.cfg" "${EFIPART_DATA}/EFI/BOOT/grub.cfg"
|
||||||
|
cp "${BOARD_DIR}/cmdline.txt" "${EFIPART_DATA}/cmdline.txt"
|
||||||
|
grub-editenv "${EFIPART_DATA}/EFI/BOOT/grubenv" create
|
||||||
|
|
||||||
|
cp -r "${EFIPART_DATA}/"* "${BOOT_DATA}/"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function hassos_post_image() {
|
||||||
|
convert_disk_image_virtual vmdk
|
||||||
|
convert_disk_image_virtual qcow2
|
||||||
|
|
||||||
|
convert_disk_image_zip vmdk
|
||||||
|
convert_disk_image_xz qcow2
|
||||||
|
|
||||||
|
convert_disk_image_xz
|
||||||
|
}
|
||||||
|
|
@@ -0,0 +1,16 @@
|
|||||||
|
CONFIG_EFI_STUB=y
|
||||||
|
|
||||||
|
CONFIG_VIRTIO=y
|
||||||
|
CONFIG_VIRTIO_PCI=y
|
||||||
|
CONFIG_VIRTIO_NET=y
|
||||||
|
CONFIG_VIRTIO_BALLOON=m
|
||||||
|
CONFIG_VIRTIO_INPUT=m
|
||||||
|
CONFIG_VIRTIO_BLK=y
|
||||||
|
CONFIG_VIRTIO_BLK_SCSI=y
|
||||||
|
CONFIG_VIRTIO_CONSOLE=m
|
||||||
|
CONFIG_VIRTIO_VSOCKETS=m
|
||||||
|
CONFIG_VIRTIO_MMIO=y
|
||||||
|
CONFIG_SCSI_VIRTIO=y
|
||||||
|
CONFIG_HW_RANDOM_VIRTIO=y
|
||||||
|
|
||||||
|
CONFIG_DRM_VIRTIO_GPU=m
|
10
buildroot-external/board/arm-uefi/generic-aarch64/meta
Normal file
10
buildroot-external/board/arm-uefi/generic-aarch64/meta
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
BOARD_ID=generic-aarch64
|
||||||
|
BOARD_NAME="Generic aarch64"
|
||||||
|
CHASSIS=embedded
|
||||||
|
BOOTLOADER=grub
|
||||||
|
KERNEL_FILE=Image
|
||||||
|
BOOT_SYS=efi
|
||||||
|
BOOT_SPL=false
|
||||||
|
DISK_SIZE=6
|
||||||
|
SUPERVISOR_MACHINE=qemuarm-64
|
||||||
|
SUPERVISOR_ARCH=aarch64
|
@@ -7,22 +7,23 @@ function hassos_pre_image() {
|
|||||||
|
|
||||||
cp -t "${BOOT_DATA}" \
|
cp -t "${BOOT_DATA}" \
|
||||||
"${BINARIES_DIR}/boot.scr" \
|
"${BINARIES_DIR}/boot.scr" \
|
||||||
"${BINARIES_DIR}/rk3288-tinker.dtb"
|
"${BINARIES_DIR}/rk3288-tinker.dtb" \
|
||||||
|
"${BINARIES_DIR}/rk3288-tinker-s.dtb"
|
||||||
|
|
||||||
|
mkdir -p "${BOOT_DATA}/overlays"
|
||||||
|
cp "${BINARIES_DIR}"/*.dtbo "${BOOT_DATA}/overlays/"
|
||||||
|
cp "${BOARD_DIR}/boot-env.txt" "${BOOT_DATA}/haos-config.txt"
|
||||||
|
|
||||||
echo "console=tty1" > "${BOOT_DATA}/cmdline.txt"
|
echo "console=tty1" > "${BOOT_DATA}/cmdline.txt"
|
||||||
|
|
||||||
# Create boot binary
|
|
||||||
rm -f "${BINARIES_DIR}/u-boot-spl-dtb.img"
|
|
||||||
mkimage -n rk3288 -T rksd -d "${BINARIES_DIR}/u-boot-spl-dtb.bin" "${BINARIES_DIR}/u-boot-spl-dtb.img"
|
|
||||||
cat "${BINARIES_DIR}/u-boot-dtb.bin" >> "${BINARIES_DIR}/u-boot-spl-dtb.img"
|
|
||||||
|
|
||||||
# SPL
|
# SPL
|
||||||
create_spl_image
|
create_spl_image
|
||||||
|
|
||||||
dd if="${BINARIES_DIR}/u-boot-spl-dtb.img" of="${SPL_IMG}" conv=notrunc bs=512 seek=64
|
dd if="${BINARIES_DIR}/idbloader.img" of="${SPL_IMG}" conv=notrunc bs=512 seek=64
|
||||||
|
dd if="${BINARIES_DIR}/u-boot-dtb.img" of="${SPL_IMG}" conv=notrunc bs=512 seek=8192
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function hassos_post_image() {
|
function hassos_post_image() {
|
||||||
convert_disk_image_gz
|
convert_disk_image_xz
|
||||||
}
|
}
|
||||||
|
2
buildroot-external/board/asus/tinker/boot-env.txt
Normal file
2
buildroot-external/board/asus/tinker/boot-env.txt
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# Uncomment this to enable GPIO support for RPI-RF-MOD/HM-MOD-RPI-PCB
|
||||||
|
#overlays=rpi-rf-mod
|
@@ -1517,7 +1517,7 @@ CONFIG_BT_HCIBTUSB=y
|
|||||||
CONFIG_BT_HCIBTUSB_BCM=y
|
CONFIG_BT_HCIBTUSB_BCM=y
|
||||||
CONFIG_BT_HCIBTUSB_RTL=y
|
CONFIG_BT_HCIBTUSB_RTL=y
|
||||||
CONFIG_BT_HCIBTSDIO=y
|
CONFIG_BT_HCIBTSDIO=y
|
||||||
CONFIG_BT_HCIUART=y
|
CONFIG_BT_HCIUART=m
|
||||||
CONFIG_BT_HCIUART_SERDEV=y
|
CONFIG_BT_HCIUART_SERDEV=y
|
||||||
CONFIG_BT_HCIUART_H4=y
|
CONFIG_BT_HCIUART_H4=y
|
||||||
# CONFIG_BT_HCIUART_NOKIA is not set
|
# CONFIG_BT_HCIUART_NOKIA is not set
|
||||||
@@ -1527,6 +1527,7 @@ CONFIG_BT_HCIUART_ATH3K=y
|
|||||||
CONFIG_BT_HCIUART_3WIRE=y
|
CONFIG_BT_HCIUART_3WIRE=y
|
||||||
# CONFIG_BT_HCIUART_INTEL is not set
|
# CONFIG_BT_HCIUART_INTEL is not set
|
||||||
# CONFIG_BT_HCIUART_BCM is not set
|
# CONFIG_BT_HCIUART_BCM is not set
|
||||||
|
CONFIG_BT_HCIUART_RTL=y
|
||||||
# CONFIG_BT_HCIUART_QCA is not set
|
# CONFIG_BT_HCIUART_QCA is not set
|
||||||
# CONFIG_BT_HCIUART_AG6XX is not set
|
# CONFIG_BT_HCIUART_AG6XX is not set
|
||||||
# CONFIG_BT_HCIUART_MRVL is not set
|
# CONFIG_BT_HCIUART_MRVL is not set
|
||||||
@@ -1556,7 +1557,6 @@ CONFIG_CFG80211_REQUIRE_SIGNED_REGDB=y
|
|||||||
CONFIG_CFG80211_USE_KERNEL_REGDB_KEYS=y
|
CONFIG_CFG80211_USE_KERNEL_REGDB_KEYS=y
|
||||||
CONFIG_CFG80211_DEFAULT_PS=y
|
CONFIG_CFG80211_DEFAULT_PS=y
|
||||||
CONFIG_CFG80211_DEBUGFS=y
|
CONFIG_CFG80211_DEBUGFS=y
|
||||||
CONFIG_CFG80211_CRDA_SUPPORT=y
|
|
||||||
CONFIG_CFG80211_WEXT=y
|
CONFIG_CFG80211_WEXT=y
|
||||||
CONFIG_LIB80211=y
|
CONFIG_LIB80211=y
|
||||||
CONFIG_LIB80211_CRYPT_WEP=y
|
CONFIG_LIB80211_CRYPT_WEP=y
|
||||||
@@ -2109,7 +2109,7 @@ CONFIG_ATH10K_USB=m
|
|||||||
# CONFIG_ATH10K_TRACING is not set
|
# CONFIG_ATH10K_TRACING is not set
|
||||||
CONFIG_WCN36XX=m
|
CONFIG_WCN36XX=m
|
||||||
# CONFIG_WCN36XX_DEBUGFS is not set
|
# CONFIG_WCN36XX_DEBUGFS is not set
|
||||||
CONFIG_RTL8188EU=m
|
# CONFIG_ATH11K is not set
|
||||||
CONFIG_WLAN_VENDOR_ATMEL=y
|
CONFIG_WLAN_VENDOR_ATMEL=y
|
||||||
CONFIG_AT76C50X_USB=m
|
CONFIG_AT76C50X_USB=m
|
||||||
CONFIG_WLAN_VENDOR_BROADCOM=y
|
CONFIG_WLAN_VENDOR_BROADCOM=y
|
||||||
@@ -2130,50 +2130,14 @@ CONFIG_HOSTAP=y
|
|||||||
CONFIG_HOSTAP_FIRMWARE=y
|
CONFIG_HOSTAP_FIRMWARE=y
|
||||||
CONFIG_HOSTAP_FIRMWARE_NVRAM=y
|
CONFIG_HOSTAP_FIRMWARE_NVRAM=y
|
||||||
# CONFIG_P54_COMMON is not set
|
# CONFIG_P54_COMMON is not set
|
||||||
CONFIG_WLAN_VENDOR_MARVELL=y
|
# CONFIG_WLAN_VENDOR_MARVELL is not set
|
||||||
CONFIG_LIBERTAS=m
|
# CONFIG_WLAN_VENDOR_MEDIATEK is not set
|
||||||
CONFIG_LIBERTAS_USB=m
|
# CONFIG_WLAN_VENDOR_MICROCHIP is not set
|
||||||
CONFIG_LIBERTAS_SDIO=m
|
# CONFIG_WLAN_VENDOR_RALINK is not set
|
||||||
CONFIG_LIBERTAS_SPI=m
|
|
||||||
# CONFIG_LIBERTAS_DEBUG is not set
|
|
||||||
# CONFIG_LIBERTAS_MESH is not set
|
|
||||||
CONFIG_LIBERTAS_THINFIRM=y
|
|
||||||
# CONFIG_LIBERTAS_THINFIRM_DEBUG is not set
|
|
||||||
CONFIG_LIBERTAS_THINFIRM_USB=m
|
|
||||||
CONFIG_MWIFIEX=y
|
|
||||||
CONFIG_MWIFIEX_SDIO=y
|
|
||||||
CONFIG_MWIFIEX_USB=m
|
|
||||||
CONFIG_WLAN_VENDOR_MEDIATEK=y
|
|
||||||
CONFIG_MT7601U=m
|
|
||||||
CONFIG_MT76_CORE=m
|
|
||||||
CONFIG_MT76_LEDS=y
|
|
||||||
CONFIG_MT76_USB=m
|
|
||||||
CONFIG_MT76x2_COMMON=m
|
|
||||||
CONFIG_MT76x0U=m
|
|
||||||
CONFIG_MT76x2U=m
|
|
||||||
CONFIG_WLAN_VENDOR_RALINK=y
|
|
||||||
CONFIG_RT2X00=y
|
|
||||||
CONFIG_RT2500USB=y
|
|
||||||
CONFIG_RT73USB=y
|
|
||||||
CONFIG_RT2800USB=y
|
|
||||||
CONFIG_RT2800USB_RT33XX=y
|
|
||||||
CONFIG_RT2800USB_RT35XX=y
|
|
||||||
CONFIG_RT2800USB_RT3573=y
|
|
||||||
CONFIG_RT2800USB_RT53XX=y
|
|
||||||
CONFIG_RT2800USB_RT55XX=y
|
|
||||||
CONFIG_RT2800USB_UNKNOWN=y
|
|
||||||
CONFIG_RT2800_LIB=y
|
|
||||||
CONFIG_RT2X00_LIB_USB=y
|
|
||||||
CONFIG_RT2X00_LIB=y
|
|
||||||
CONFIG_RT2X00_LIB_FIRMWARE=y
|
|
||||||
CONFIG_RT2X00_LIB_CRYPTO=y
|
|
||||||
CONFIG_RT2X00_LIB_LEDS=y
|
|
||||||
# CONFIG_RT2X00_LIB_DEBUGFS is not set
|
|
||||||
# CONFIG_RT2X00_DEBUG is not set
|
|
||||||
CONFIG_WLAN_VENDOR_REALTEK=y
|
CONFIG_WLAN_VENDOR_REALTEK=y
|
||||||
CONFIG_RTL8187=m
|
CONFIG_RTL8187=m
|
||||||
CONFIG_RTL8187_LEDS=y
|
CONFIG_RTL8187_LEDS=y
|
||||||
CONFIG_RTL_CARDS=m
|
CONFIG_RTL_CARDS=y
|
||||||
CONFIG_RTL8192CU=m
|
CONFIG_RTL8192CU=m
|
||||||
CONFIG_RTLWIFI=m
|
CONFIG_RTLWIFI=m
|
||||||
CONFIG_RTLWIFI_USB=m
|
CONFIG_RTLWIFI_USB=m
|
||||||
@@ -2183,9 +2147,9 @@ CONFIG_RTL8XXXU=y
|
|||||||
# CONFIG_RTL8XXXU_UNTESTED is not set
|
# CONFIG_RTL8XXXU_UNTESTED is not set
|
||||||
CONFIG_WLAN_VENDOR_RSI=y
|
CONFIG_WLAN_VENDOR_RSI=y
|
||||||
# CONFIG_RSI_91X is not set
|
# CONFIG_RSI_91X is not set
|
||||||
CONFIG_WLAN_VENDOR_ST=y
|
# CONFIG_WLAN_VENDOR_ST is not set
|
||||||
# CONFIG_CW1200 is not set
|
# CONFIG_CW1200 is not set
|
||||||
CONFIG_WLAN_VENDOR_TI=y
|
# CONFIG_WLAN_VENDOR_TI is not set
|
||||||
# CONFIG_WL1251 is not set
|
# CONFIG_WL1251 is not set
|
||||||
# CONFIG_WL12XX is not set
|
# CONFIG_WL12XX is not set
|
||||||
# CONFIG_WL18XX is not set
|
# CONFIG_WL18XX is not set
|
||||||
@@ -2511,7 +2475,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y
|
|||||||
# CONFIG_SERIAL_CONEXANT_DIGICOLOR is not set
|
# CONFIG_SERIAL_CONEXANT_DIGICOLOR is not set
|
||||||
# CONFIG_SERIAL_ST_ASC is not set
|
# CONFIG_SERIAL_ST_ASC is not set
|
||||||
CONFIG_SERIAL_DEV_BUS=y
|
CONFIG_SERIAL_DEV_BUS=y
|
||||||
# CONFIG_SERIAL_DEV_CTRL_TTYPORT is not set
|
CONFIG_SERIAL_DEV_CTRL_TTYPORT=y
|
||||||
# CONFIG_TTY_PRINTK is not set
|
# CONFIG_TTY_PRINTK is not set
|
||||||
# CONFIG_HVC_DCC is not set
|
# CONFIG_HVC_DCC is not set
|
||||||
# CONFIG_IPMI_HANDLER is not set
|
# CONFIG_IPMI_HANDLER is not set
|
||||||
|
@@ -3,6 +3,8 @@ BOARD_NAME="Asus TinkerBoard"
|
|||||||
CHASSIS=embedded
|
CHASSIS=embedded
|
||||||
BOOTLOADER=uboot
|
BOOTLOADER=uboot
|
||||||
KERNEL_FILE=zImage
|
KERNEL_FILE=zImage
|
||||||
BOOT_SYS=hyprid
|
BOOT_SYS=hybrid
|
||||||
BOOT_SPL=true
|
BOOT_SPL=true
|
||||||
BOOT_ENV_SIZE=0x8000
|
BOOT_ENV_SIZE=0x8000
|
||||||
|
SUPERVISOR_MACHINE=tinker
|
||||||
|
SUPERVISOR_ARCH=armv7
|
||||||
|
File diff suppressed because it is too large
Load Diff
@@ -1,122 +0,0 @@
|
|||||||
From 7ba71967a2678e119bcd819ac92d08bd038e1879 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Myy <myy@miouyouyou.fr>
|
|
||||||
Date: Mon, 17 Jul 2017 18:34:33 +0000
|
|
||||||
Subject: [PATCH 5/5] Mali midgard r19p0 fixes for 4.13 kernels
|
|
||||||
|
|
||||||
Mostly due to DMA structure members renamed, and some signatures
|
|
||||||
modifications done during the development of Linux 4.11.
|
|
||||||
|
|
||||||
* mm, fs: reduce fault, page_mkwrite, and pfn_mkwrite to take only vmf
|
|
||||||
11bac80004499ea59f361ef2a5516c84b6eab675
|
|
||||||
v4.11-rc1
|
|
||||||
|
|
||||||
* sched/headers: Move task->mm handling methods to <linux/sched/mm.h>
|
|
||||||
68e21be2916b359fd8afb536c1911dc014cfd03e
|
|
||||||
v4.11-rc1
|
|
||||||
|
|
||||||
* sched/headers: Move task-stack related APIs from <linux/sched.h> to
|
|
||||||
<linux/sched/task_stack.h>
|
|
||||||
f3ac60671954c8d413532627b1be13a76f394c49
|
|
||||||
v4.11-rc1
|
|
||||||
|
|
||||||
* dma-fence: Introduce drm_fence_set_error() helper
|
|
||||||
a009e975da5c7d42a7f5eaadc54946eb5f76c9af
|
|
||||||
v4.11-rc1
|
|
||||||
|
|
||||||
Signed-off-by: Myy <myy@miouyouyou.fr>
|
|
||||||
---
|
|
||||||
drivers/gpu/arm/midgard/mali_kbase.h | 4 ++++
|
|
||||||
drivers/gpu/arm/midgard/mali_kbase_fence.h | 4 ++++
|
|
||||||
drivers/gpu/arm/midgard/mali_kbase_mem_linux.c | 6 ++++++
|
|
||||||
drivers/gpu/arm/midgard/mali_kbase_sync_file.c | 12 ++++++++++++
|
|
||||||
4 files changed, 26 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/drivers/gpu/arm/midgard/mali_kbase.h b/drivers/gpu/arm/midgard/mali_kbase.h
|
|
||||||
index d77f186..5ee47c4 100644
|
|
||||||
--- a/drivers/gpu/arm/midgard/mali_kbase.h
|
|
||||||
+++ b/drivers/gpu/arm/midgard/mali_kbase.h
|
|
||||||
@@ -35,6 +35,10 @@
|
|
||||||
#include <linux/mutex.h>
|
|
||||||
#include <linux/rwsem.h>
|
|
||||||
#include <linux/sched.h>
|
|
||||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0)
|
|
||||||
+#include <linux/sched/task_stack.h>
|
|
||||||
+#include <linux/sched/mm.h>
|
|
||||||
+#endif
|
|
||||||
#include <linux/slab.h>
|
|
||||||
#include <linux/spinlock.h>
|
|
||||||
#include <linux/vmalloc.h>
|
|
||||||
diff --git a/drivers/gpu/arm/midgard/mali_kbase_fence.h b/drivers/gpu/arm/midgard/mali_kbase_fence.h
|
|
||||||
index 8d39299..3c2e3a9 100644
|
|
||||||
--- a/drivers/gpu/arm/midgard/mali_kbase_fence.h
|
|
||||||
+++ b/drivers/gpu/arm/midgard/mali_kbase_fence.h
|
|
||||||
@@ -134,7 +134,11 @@ static inline bool kbase_fence_out_is_ours(struct kbase_jd_atom *katom)
|
|
||||||
static inline int kbase_fence_out_signal(struct kbase_jd_atom *katom,
|
|
||||||
int status)
|
|
||||||
{
|
|
||||||
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 11, 0))
|
|
||||||
katom->dma_fence.fence->status = status;
|
|
||||||
+#else
|
|
||||||
+ katom->dma_fence.fence->error = status;
|
|
||||||
+#endif
|
|
||||||
return dma_fence_signal(katom->dma_fence.fence);
|
|
||||||
}
|
|
||||||
|
|
||||||
diff --git a/drivers/gpu/arm/midgard/mali_kbase_mem_linux.c b/drivers/gpu/arm/midgard/mali_kbase_mem_linux.c
|
|
||||||
index b1f2c46..896aa35 100644
|
|
||||||
--- a/drivers/gpu/arm/midgard/mali_kbase_mem_linux.c
|
|
||||||
+++ b/drivers/gpu/arm/midgard/mali_kbase_mem_linux.c
|
|
||||||
@@ -1788,8 +1788,14 @@ static void kbase_cpu_vm_close(struct vm_area_struct *vma)
|
|
||||||
KBASE_EXPORT_TEST_API(kbase_cpu_vm_close);
|
|
||||||
|
|
||||||
|
|
||||||
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 11, 0))
|
|
||||||
static int kbase_cpu_vm_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
|
|
||||||
{
|
|
||||||
+#else
|
|
||||||
+static int kbase_cpu_vm_fault(struct vm_fault *vmf)
|
|
||||||
+{
|
|
||||||
+ struct vm_area_struct *vma = vmf->vma;
|
|
||||||
+#endif
|
|
||||||
struct kbase_cpu_mapping *map = vma->vm_private_data;
|
|
||||||
pgoff_t rel_pgoff;
|
|
||||||
size_t i;
|
|
||||||
diff --git a/drivers/gpu/arm/midgard/mali_kbase_sync_file.c b/drivers/gpu/arm/midgard/mali_kbase_sync_file.c
|
|
||||||
index 4e1621c..d84a54e 100644
|
|
||||||
--- a/drivers/gpu/arm/midgard/mali_kbase_sync_file.c
|
|
||||||
+++ b/drivers/gpu/arm/midgard/mali_kbase_sync_file.c
|
|
||||||
@@ -161,8 +161,13 @@ static void kbase_fence_wait_callback(struct dma_fence *fence,
|
|
||||||
struct kbase_context *kctx = katom->kctx;
|
|
||||||
|
|
||||||
/* Cancel atom if fence is erroneous */
|
|
||||||
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 11, 0))
|
|
||||||
if (dma_fence_is_signaled(kcb->fence) && kcb->fence->status < 0)
|
|
||||||
katom->event_code = BASE_JD_EVENT_JOB_CANCELLED;
|
|
||||||
+#else
|
|
||||||
+ if (dma_fence_is_signaled(kcb->fence) && kcb->fence->error < 0)
|
|
||||||
+ katom->event_code = BASE_JD_EVENT_JOB_CANCELLED;
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
if (kbase_fence_dep_count_dec_and_test(katom)) {
|
|
||||||
/* We take responsibility of handling this */
|
|
||||||
@@ -273,10 +278,17 @@ static void kbase_sync_fence_info_get(struct dma_fence *fence,
|
|
||||||
* 1 : signaled
|
|
||||||
*/
|
|
||||||
if (dma_fence_is_signaled(fence)) {
|
|
||||||
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 11, 0))
|
|
||||||
if (fence->status < 0)
|
|
||||||
info->status = fence->status; /* signaled with error */
|
|
||||||
else
|
|
||||||
info->status = 1; /* signaled with success */
|
|
||||||
+#else
|
|
||||||
+ if (fence->error < 0)
|
|
||||||
+ info->status = fence->error; /* signaled with error */
|
|
||||||
+ else
|
|
||||||
+ info->status = 1; /* signaled with success */
|
|
||||||
+#endif
|
|
||||||
} else {
|
|
||||||
info->status = 0; /* still active (unsignaled) */
|
|
||||||
}
|
|
||||||
--
|
|
||||||
2.10.2
|
|
||||||
|
|
@@ -0,0 +1,55 @@
|
|||||||
|
From ff0c5c49024da05b47d4fcc4d115761c43eef7a6 Mon Sep 17 00:00:00 2001
|
||||||
|
Message-Id: <ff0c5c49024da05b47d4fcc4d115761c43eef7a6.1652225232.git.stefan@agner.ch>
|
||||||
|
From: Stefan Agner <stefan@agner.ch>
|
||||||
|
Date: Wed, 17 Feb 2021 19:55:41 +0100
|
||||||
|
Subject: [PATCH] Revert "ARM: dts: rockchip: use DMA channels for UARTs for
|
||||||
|
RK3288"
|
||||||
|
|
||||||
|
This reverts commit 3425fe335c29310f6628faf9a7947d07f32d8962.
|
||||||
|
---
|
||||||
|
arch/arm/boot/dts/rk3288.dtsi | 8 --------
|
||||||
|
1 file changed, 8 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/boot/dts/rk3288.dtsi b/arch/arm/boot/dts/rk3288.dtsi
|
||||||
|
index 4dcdcf17c977..ff6faa82192b 100644
|
||||||
|
--- a/arch/arm/boot/dts/rk3288.dtsi
|
||||||
|
+++ b/arch/arm/boot/dts/rk3288.dtsi
|
||||||
|
@@ -378,8 +378,6 @@ uart0: serial@ff180000 {
|
||||||
|
reg-io-width = <4>;
|
||||||
|
clocks = <&cru SCLK_UART0>, <&cru PCLK_UART0>;
|
||||||
|
clock-names = "baudclk", "apb_pclk";
|
||||||
|
- dmas = <&dmac_peri 1>, <&dmac_peri 2>;
|
||||||
|
- dma-names = "tx", "rx";
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&uart0_xfer>;
|
||||||
|
status = "disabled";
|
||||||
|
@@ -393,8 +391,6 @@ uart1: serial@ff190000 {
|
||||||
|
reg-io-width = <4>;
|
||||||
|
clocks = <&cru SCLK_UART1>, <&cru PCLK_UART1>;
|
||||||
|
clock-names = "baudclk", "apb_pclk";
|
||||||
|
- dmas = <&dmac_peri 3>, <&dmac_peri 4>;
|
||||||
|
- dma-names = "tx", "rx";
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&uart1_xfer>;
|
||||||
|
status = "disabled";
|
||||||
|
@@ -421,8 +417,6 @@ uart3: serial@ff1b0000 {
|
||||||
|
reg-io-width = <4>;
|
||||||
|
clocks = <&cru SCLK_UART3>, <&cru PCLK_UART3>;
|
||||||
|
clock-names = "baudclk", "apb_pclk";
|
||||||
|
- dmas = <&dmac_peri 7>, <&dmac_peri 8>;
|
||||||
|
- dma-names = "tx", "rx";
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&uart3_xfer>;
|
||||||
|
status = "disabled";
|
||||||
|
@@ -436,8 +430,6 @@ uart4: serial@ff1c0000 {
|
||||||
|
reg-io-width = <4>;
|
||||||
|
clocks = <&cru SCLK_UART4>, <&cru PCLK_UART4>;
|
||||||
|
clock-names = "baudclk", "apb_pclk";
|
||||||
|
- dmas = <&dmac_peri 9>, <&dmac_peri 10>;
|
||||||
|
- dma-names = "tx", "rx";
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&uart4_xfer>;
|
||||||
|
status = "disabled";
|
||||||
|
--
|
||||||
|
2.36.1
|
||||||
|
|
@@ -0,0 +1,55 @@
|
|||||||
|
From e73b4b762a0842cc75b2784e4c4267f6f4fc50c4 Mon Sep 17 00:00:00 2001
|
||||||
|
Message-Id: <e73b4b762a0842cc75b2784e4c4267f6f4fc50c4.1652225232.git.stefan@agner.ch>
|
||||||
|
In-Reply-To: <ff0c5c49024da05b47d4fcc4d115761c43eef7a6.1652225232.git.stefan@agner.ch>
|
||||||
|
References: <ff0c5c49024da05b47d4fcc4d115761c43eef7a6.1652225232.git.stefan@agner.ch>
|
||||||
|
From: "Miouyouyou (Myy)" <myy@miouyouyou.fr>
|
||||||
|
Date: Mon, 5 Nov 2018 22:15:14 +0100
|
||||||
|
Subject: [PATCH] ARM: DTS: rk3288-tinker: Defining the SPI interface
|
||||||
|
|
||||||
|
Taken from, and tested by @TonyMac32 .
|
||||||
|
|
||||||
|
Well, the original one was tested by him but I had to adapt the
|
||||||
|
registers definitions to the new 64-bits LPAE-compliant syntax.
|
||||||
|
|
||||||
|
Therefore that *might* break, along with a few other patches.
|
||||||
|
|
||||||
|
Signed-off-by: Miouyouyou (Myy) <myy@miouyouyou.fr>
|
||||||
|
[move change to rk3288-tinker.dtsi]
|
||||||
|
Signed-off-by: Stefan Agner <stefan@agner.ch>
|
||||||
|
---
|
||||||
|
arch/arm/boot/dts/rk3288-tinker.dtsi | 19 +++++++++++++++++++
|
||||||
|
1 file changed, 19 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/boot/dts/rk3288-tinker.dtsi b/arch/arm/boot/dts/rk3288-tinker.dtsi
|
||||||
|
index 9c1e38c54eae..cf278bcc91ad 100644
|
||||||
|
--- a/arch/arm/boot/dts/rk3288-tinker.dtsi
|
||||||
|
+++ b/arch/arm/boot/dts/rk3288-tinker.dtsi
|
||||||
|
@@ -485,6 +485,25 @@ &sdio0 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
+&spi2 {
|
||||||
|
+ max-freq = <50000000>;
|
||||||
|
+ status = "okay";
|
||||||
|
+
|
||||||
|
+ spidev@0 {
|
||||||
|
+ compatible = "rockchip,spi_tinker";
|
||||||
|
+ reg = <0x0 0>;
|
||||||
|
+ spi-max-frequency = <50000000>;
|
||||||
|
+ spi-cpha = <1>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ spidev@1 {
|
||||||
|
+ compatible = "rockchip,spi_tinker";
|
||||||
|
+ reg = <0x1>;
|
||||||
|
+ spi-max-frequency = <50000000>;
|
||||||
|
+ spi-cpha = <1>;
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
&tsadc {
|
||||||
|
rockchip,hw-tshut-mode = <1>; /* tshut mode 0:CRU 1:GPIO */
|
||||||
|
rockchip,hw-tshut-polarity = <1>; /* tshut polarity 0:LOW 1:HIGH */
|
||||||
|
--
|
||||||
|
2.36.1
|
||||||
|
|
@@ -1,36 +0,0 @@
|
|||||||
From f76c9c58669a3bba0456191431be558ab8054f50 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Myy <myy@miouyouyou.fr>
|
|
||||||
Date: Mon, 17 Jul 2017 11:43:00 +0000
|
|
||||||
Subject: [PATCH 3/5] Using the new header on 4.12 kernels for copy_*_user
|
|
||||||
|
|
||||||
These changes are due to :
|
|
||||||
* generic ...copy_..._user primitives
|
|
||||||
d597580d373774b1bdab84b3d26ff0b55162b916
|
|
||||||
Version : 4.12-rc1
|
|
||||||
|
|
||||||
Signed-off-by: Myy <myy@miouyouyou.fr>
|
|
||||||
---
|
|
||||||
drivers/base/ump/src/linux/ump_kernel_linux.c | 7 ++++++-
|
|
||||||
1 file changed, 6 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/base/ump/src/linux/ump_kernel_linux.c b/drivers/base/ump/src/linux/ump_kernel_linux.c
|
|
||||||
index d6c3c53..bb3a7f0 100644
|
|
||||||
--- a/drivers/base/ump/src/linux/ump_kernel_linux.c
|
|
||||||
+++ b/drivers/base/ump/src/linux/ump_kernel_linux.c
|
|
||||||
@@ -20,7 +20,12 @@
|
|
||||||
#include <linux/ump-ioctl.h>
|
|
||||||
#include <linux/ump.h>
|
|
||||||
|
|
||||||
-#include <asm/uaccess.h> /* copy_*_user */
|
|
||||||
+#include <linux/version.h>
|
|
||||||
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,12,0)
|
|
||||||
+#include <asm/uaccess.h> /* copy_*_user */
|
|
||||||
+#else
|
|
||||||
+#include <linux/uaccess.h> /* copy_*_user */
|
|
||||||
+#endif
|
|
||||||
#include <linux/compat.h>
|
|
||||||
#include <linux/module.h> /* kernel module definitions */
|
|
||||||
#include <linux/fs.h> /* file system operations */
|
|
||||||
--
|
|
||||||
2.10.2
|
|
||||||
|
|
@@ -0,0 +1,41 @@
|
|||||||
|
From 00de5155d12a178b83961f459ddccd7fa08ec25c Mon Sep 17 00:00:00 2001
|
||||||
|
Message-Id: <00de5155d12a178b83961f459ddccd7fa08ec25c.1652225232.git.stefan@agner.ch>
|
||||||
|
In-Reply-To: <ff0c5c49024da05b47d4fcc4d115761c43eef7a6.1652225232.git.stefan@agner.ch>
|
||||||
|
References: <ff0c5c49024da05b47d4fcc4d115761c43eef7a6.1652225232.git.stefan@agner.ch>
|
||||||
|
From: Stefan Agner <stefan@agner.ch>
|
||||||
|
Date: Fri, 4 Sep 2020 21:57:55 +0200
|
||||||
|
Subject: [PATCH] ARM: dts: rockchip: enable I2C1/4 on rk3288-tinker
|
||||||
|
|
||||||
|
Enable I2C devices which are accessible via 40-pin header.
|
||||||
|
|
||||||
|
Signed-off-by: Stefan Agner <stefan@agner.ch>
|
||||||
|
---
|
||||||
|
arch/arm/boot/dts/rk3288-tinker.dtsi | 8 ++++++++
|
||||||
|
1 file changed, 8 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/boot/dts/rk3288-tinker.dtsi b/arch/arm/boot/dts/rk3288-tinker.dtsi
|
||||||
|
index cf278bcc91ad..f23c6efd39d4 100644
|
||||||
|
--- a/arch/arm/boot/dts/rk3288-tinker.dtsi
|
||||||
|
+++ b/arch/arm/boot/dts/rk3288-tinker.dtsi
|
||||||
|
@@ -344,10 +344,18 @@ regulator-state-mem {
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
+&i2c1 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
&i2c2 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
+&i2c4 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
&i2c5 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
--
|
||||||
|
2.36.1
|
||||||
|
|
@@ -1,46 +0,0 @@
|
|||||||
From 63c110cdebc2c692964e1250c6f74f9e8c47c85d Mon Sep 17 00:00:00 2001
|
|
||||||
From: Myy <myy@miouyouyou.fr>
|
|
||||||
Date: Tue, 10 Jan 2017 04:28:48 +0000
|
|
||||||
Subject: [PATCH 4/5] Adapt get_user_pages calls to use the new calling
|
|
||||||
procedure
|
|
||||||
|
|
||||||
These changes are due to this commit:
|
|
||||||
mm: replace get_user_pages_remote() write/force parameters with gup_flags
|
|
||||||
9beae1ea89305a9667ceaab6d0bf46a045ad71e7
|
|
||||||
Kernel: 4.9.0-rc
|
|
||||||
|
|
||||||
Signed-off-by: Myy <myy@miouyouyou.fr>
|
|
||||||
---
|
|
||||||
drivers/base/ump/src/linux/ump_kernel_linux_mem.c | 8 ++++++++
|
|
||||||
1 file changed, 8 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/drivers/base/ump/src/linux/ump_kernel_linux_mem.c b/drivers/base/ump/src/linux/ump_kernel_linux_mem.c
|
|
||||||
index 9186dd0..def4c0e 100644
|
|
||||||
--- a/drivers/base/ump/src/linux/ump_kernel_linux_mem.c
|
|
||||||
+++ b/drivers/base/ump/src/linux/ump_kernel_linux_mem.c
|
|
||||||
@@ -35,6 +35,10 @@
|
|
||||||
#include <ump_arch.h>
|
|
||||||
#include <common/ump_kernel_priv.h>
|
|
||||||
|
|
||||||
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,5,0))
|
|
||||||
+#include <linux/pfn_t.h>
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
static void umpp_vm_close(struct vm_area_struct *vma)
|
|
||||||
{
|
|
||||||
umpp_cpu_mapping * mapping;
|
|
||||||
@@ -222,7 +226,11 @@ int umpp_linux_mmap(struct file * filp, struct vm_area_struct * vma)
|
|
||||||
paddr = alloc->block_array[block_idx].addr;
|
|
||||||
}
|
|
||||||
|
|
||||||
+#if (LINUX_VERSION_CODE <= KERNEL_VERSION(4,4,0))
|
|
||||||
err = vm_insert_mixed(vma, vma->vm_start + (i << PAGE_SHIFT), paddr >> PAGE_SHIFT);
|
|
||||||
+#else
|
|
||||||
+ err = vm_insert_mixed(vma, vma->vm_start + (i << PAGE_SHIFT), __pfn_to_pfn_t(paddr >> PAGE_SHIFT, PFN_DEV));
|
|
||||||
+#endif
|
|
||||||
paddr += PAGE_SIZE;
|
|
||||||
}
|
|
||||||
|
|
||||||
--
|
|
||||||
2.10.2
|
|
||||||
|
|
@@ -1,40 +0,0 @@
|
|||||||
From 7c27055687c595e9f9eca484314f4fe3866a4260 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Myy <myy@miouyouyou.fr>
|
|
||||||
Date: Tue, 18 Jul 2017 17:35:16 +0000
|
|
||||||
Subject: [PATCH 2/2] Don't be TOO severe when looking for the IRQ names
|
|
||||||
|
|
||||||
Using strncmp with an all caps result in the driver being unable to
|
|
||||||
initialize itself when using the mainlined RK3288 DTS files, since they
|
|
||||||
define the IRQ names as "job", "mmu" and "gpu" instead of "JOB", "MMU"
|
|
||||||
and "GPU".
|
|
||||||
|
|
||||||
strncmp calls have been replaced by strncasecmp calls in order to
|
|
||||||
avoid such issue.
|
|
||||||
|
|
||||||
Signed-off-by: Myy <myy@miouyouyou.fr>
|
|
||||||
---
|
|
||||||
drivers/gpu/arm/midgard/mali_kbase_core_linux.c | 6 +++---
|
|
||||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/gpu/arm/midgard/mali_kbase_core_linux.c b/drivers/gpu/arm/midgard/mali_kbase_core_linux.c
|
|
||||||
index 0cccb0b..9cc65d2 100644
|
|
||||||
--- a/drivers/gpu/arm/midgard/mali_kbase_core_linux.c
|
|
||||||
+++ b/drivers/gpu/arm/midgard/mali_kbase_core_linux.c
|
|
||||||
@@ -938,11 +938,11 @@ static int assign_irqs(struct platform_device *pdev)
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef CONFIG_OF
|
|
||||||
- if (!strncmp(irq_res->name, "JOB", 4)) {
|
|
||||||
+ if (!strncasecmp(irq_res->name, "JOB", 4)) {
|
|
||||||
irqtag = JOB_IRQ_TAG;
|
|
||||||
- } else if (!strncmp(irq_res->name, "MMU", 4)) {
|
|
||||||
+ } else if (!strncasecmp(irq_res->name, "MMU", 4)) {
|
|
||||||
irqtag = MMU_IRQ_TAG;
|
|
||||||
- } else if (!strncmp(irq_res->name, "GPU", 4)) {
|
|
||||||
+ } else if (!strncasecmp(irq_res->name, "GPU", 4)) {
|
|
||||||
irqtag = GPU_IRQ_TAG;
|
|
||||||
} else {
|
|
||||||
dev_err(&pdev->dev, "Invalid irq res name: '%s'\n",
|
|
||||||
--
|
|
||||||
2.10.2
|
|
||||||
|
|
@@ -0,0 +1,34 @@
|
|||||||
|
From e45da42e71e4f92995d5ec11679ca00b0971dbfe Mon Sep 17 00:00:00 2001
|
||||||
|
Message-Id: <e45da42e71e4f92995d5ec11679ca00b0971dbfe.1652225232.git.stefan@agner.ch>
|
||||||
|
In-Reply-To: <ff0c5c49024da05b47d4fcc4d115761c43eef7a6.1652225232.git.stefan@agner.ch>
|
||||||
|
References: <ff0c5c49024da05b47d4fcc4d115761c43eef7a6.1652225232.git.stefan@agner.ch>
|
||||||
|
From: Myy Miouyouyou <myy@miouyouyou.fr>
|
||||||
|
Date: Thu, 19 Oct 2017 21:24:47 +0200
|
||||||
|
Subject: [PATCH] RK3288: DTSI: rk3288.dtsi: Add missing SPI2 pinctrl
|
||||||
|
|
||||||
|
The spi2_cs1 pin reference is missing in the spi2 first pin control
|
||||||
|
definition.
|
||||||
|
|
||||||
|
This patch is taken from the patches provided by the ARMbian team.
|
||||||
|
|
||||||
|
Signed-off-by: Myy Miouyouyou <myy@miouyouyou.fr>
|
||||||
|
---
|
||||||
|
arch/arm/boot/dts/rk3288.dtsi | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/boot/dts/rk3288.dtsi b/arch/arm/boot/dts/rk3288.dtsi
|
||||||
|
index ff6faa82192b..5061c5418d75 100644
|
||||||
|
--- a/arch/arm/boot/dts/rk3288.dtsi
|
||||||
|
+++ b/arch/arm/boot/dts/rk3288.dtsi
|
||||||
|
@@ -311,7 +311,7 @@ spi2: spi@ff130000 {
|
||||||
|
dma-names = "tx", "rx";
|
||||||
|
interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
pinctrl-names = "default";
|
||||||
|
- pinctrl-0 = <&spi2_clk &spi2_tx &spi2_rx &spi2_cs0>;
|
||||||
|
+ pinctrl-0 = <&spi2_clk &spi2_tx &spi2_rx &spi2_cs0 &spi2_cs1>;
|
||||||
|
reg = <0x0 0xff130000 0x0 0x1000>;
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
--
|
||||||
|
2.36.1
|
||||||
|
|
@@ -0,0 +1,31 @@
|
|||||||
|
From e33d3ba4c34d0893d9d07b62ad4eea41d2e8bbc0 Mon Sep 17 00:00:00 2001
|
||||||
|
Message-Id: <e33d3ba4c34d0893d9d07b62ad4eea41d2e8bbc0.1652225232.git.stefan@agner.ch>
|
||||||
|
In-Reply-To: <ff0c5c49024da05b47d4fcc4d115761c43eef7a6.1652225232.git.stefan@agner.ch>
|
||||||
|
References: <ff0c5c49024da05b47d4fcc4d115761c43eef7a6.1652225232.git.stefan@agner.ch>
|
||||||
|
From: "Miouyouyou (Myy)" <myy@miouyouyou.fr>
|
||||||
|
Date: Mon, 5 Nov 2018 20:16:05 +0100
|
||||||
|
Subject: [PATCH] ARM: DTSI: rk3288-tinker: Improving the CPU max voltage
|
||||||
|
|
||||||
|
Taken from the various patches provided by @TonyMac32 .
|
||||||
|
|
||||||
|
Signed-off-by: Miouyouyou (Myy) <myy@miouyouyou.fr>
|
||||||
|
---
|
||||||
|
arch/arm/boot/dts/rk3288-tinker.dtsi | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/boot/dts/rk3288-tinker.dtsi b/arch/arm/boot/dts/rk3288-tinker.dtsi
|
||||||
|
index f23c6efd39d4..cdff130d1292 100644
|
||||||
|
--- a/arch/arm/boot/dts/rk3288-tinker.dtsi
|
||||||
|
+++ b/arch/arm/boot/dts/rk3288-tinker.dtsi
|
||||||
|
@@ -186,7 +186,7 @@ vdd_cpu: DCDC_REG1 {
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
regulator-min-microvolt = <750000>;
|
||||||
|
- regulator-max-microvolt = <1400000>;
|
||||||
|
+ regulator-max-microvolt = <1450000>;
|
||||||
|
regulator-name = "vdd_arm";
|
||||||
|
regulator-ramp-delay = <6000>;
|
||||||
|
regulator-state-mem {
|
||||||
|
--
|
||||||
|
2.36.1
|
||||||
|
|
@@ -1,42 +0,0 @@
|
|||||||
From ef7689887c31d2b1336e14f2c089185e8f60a9f1 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Myy <myy@miouyouyou.fr>
|
|
||||||
Date: Mon, 7 Aug 2017 19:22:39 +0000
|
|
||||||
Subject: [PATCH] Added the new "compatible" list, mainly used by Rockchip
|
|
||||||
|
|
||||||
Because, you know, all the Mali Midgard GPU used to define the GPU
|
|
||||||
using the 'compatible = "arm,mali-midgard"' property, which worked fine.
|
|
||||||
|
|
||||||
But it was removed.
|
|
||||||
|
|
||||||
They replaced the "arm,mali-midgard" node by "arm,mali-tXXX" where XXX
|
|
||||||
is the GPU series, and added "arm,rk3288-mali" which is used by nothing.
|
|
||||||
|
|
||||||
Which broke the Mali Midgard GPL kernel driver.
|
|
||||||
|
|
||||||
This patch fixes this issue.
|
|
||||||
|
|
||||||
Signed-off-by: Myy <myy@miouyouyou.fr>
|
|
||||||
---
|
|
||||||
drivers/gpu/arm/midgard/mali_kbase_core_linux.c | 6 ++++++
|
|
||||||
1 file changed, 6 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/drivers/gpu/arm/midgard/mali_kbase_core_linux.c b/drivers/gpu/arm/midgard/mali_kbase_core_linux.c
|
|
||||||
index 27dcd9c1..cc4932a4 100644
|
|
||||||
--- a/drivers/gpu/arm/midgard/mali_kbase_core_linux.c
|
|
||||||
+++ b/drivers/gpu/arm/midgard/mali_kbase_core_linux.c
|
|
||||||
@@ -4742,6 +4742,12 @@ static const struct dev_pm_ops kbase_pm_ops = {
|
|
||||||
static const struct of_device_id kbase_dt_ids[] = {
|
|
||||||
{ .compatible = "arm,malit6xx" },
|
|
||||||
{ .compatible = "arm,mali-midgard" },
|
|
||||||
+ { .compatible = "arm,mali-t720" },
|
|
||||||
+ { .compatible = "arm,mali-t760" },
|
|
||||||
+ { .compatible = "arm,mali-t820" },
|
|
||||||
+ { .compatible = "arm,mali-t830" },
|
|
||||||
+ { .compatible = "arm,mali-t860" },
|
|
||||||
+ { .compatible = "arm,mali-t880" },
|
|
||||||
{ /* sentinel */ }
|
|
||||||
};
|
|
||||||
MODULE_DEVICE_TABLE(of, kbase_dt_ids);
|
|
||||||
--
|
|
||||||
2.13.0
|
|
||||||
|
|
@@ -0,0 +1,119 @@
|
|||||||
|
From e073d75cd0dbfbcbbf1b46e565b326db37b75e6a Mon Sep 17 00:00:00 2001
|
||||||
|
Message-Id: <e073d75cd0dbfbcbbf1b46e565b326db37b75e6a.1652225232.git.stefan@agner.ch>
|
||||||
|
In-Reply-To: <ff0c5c49024da05b47d4fcc4d115761c43eef7a6.1652225232.git.stefan@agner.ch>
|
||||||
|
References: <ff0c5c49024da05b47d4fcc4d115761c43eef7a6.1652225232.git.stefan@agner.ch>
|
||||||
|
From: Myy Miouyouyou <myy@miouyouyou.fr>
|
||||||
|
Date: Sun, 7 Jan 2018 01:52:44 +0100
|
||||||
|
Subject: [PATCH] drivers: mmc: dw-mci-rockchip: Handle ASUS Tinkerboard reboot
|
||||||
|
|
||||||
|
On ASUS Tinkerboard systems, if the SDMMC hardware is shutdown before
|
||||||
|
rebooting, the system will be dead, as the SDMMC is the only way to
|
||||||
|
boot anything, and the hardware doesn't power up the SDMMC hardware
|
||||||
|
automatically when rebooting.
|
||||||
|
|
||||||
|
So, when using an ASUS Tinkerboard system, a new reboot handler is
|
||||||
|
installed. This reboot handler takes care of powering the SDMMC
|
||||||
|
hardware again before restarting the system, resolving the issue.
|
||||||
|
|
||||||
|
The code was inspired by the pwrseq_emmc.c, which seems to overcome
|
||||||
|
similar effects with eMMC hardware.
|
||||||
|
|
||||||
|
Signed-off-by: Myy Miouyouyou <myy@miouyouyou.fr>
|
||||||
|
---
|
||||||
|
drivers/mmc/host/dw_mmc-rockchip.c | 66 ++++++++++++++++++++++++++++++
|
||||||
|
1 file changed, 66 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/drivers/mmc/host/dw_mmc-rockchip.c b/drivers/mmc/host/dw_mmc-rockchip.c
|
||||||
|
index d36991acd6df..a526927e29df 100644
|
||||||
|
--- a/drivers/mmc/host/dw_mmc-rockchip.c
|
||||||
|
+++ b/drivers/mmc/host/dw_mmc-rockchip.c
|
||||||
|
@@ -12,6 +12,11 @@
|
||||||
|
#include <linux/pm_runtime.h>
|
||||||
|
#include <linux/slab.h>
|
||||||
|
|
||||||
|
+#include <linux/regulator/consumer.h>
|
||||||
|
+#include <linux/reboot.h>
|
||||||
|
+#include <linux/delay.h>
|
||||||
|
+#include "../core/core.h"
|
||||||
|
+
|
||||||
|
#include "dw_mmc.h"
|
||||||
|
#include "dw_mmc-pltfm.h"
|
||||||
|
|
||||||
|
@@ -330,6 +335,66 @@ static const struct of_device_id dw_mci_rockchip_match[] = {
|
||||||
|
};
|
||||||
|
MODULE_DEVICE_TABLE(of, dw_mci_rockchip_match);
|
||||||
|
|
||||||
|
+struct dw_mci_rockchip_broken_boards_data {
|
||||||
|
+ struct notifier_block reset_nb;
|
||||||
|
+ struct platform_device *pdev;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+/* This reboot handler handles cases where disabling the SDMMC on
|
||||||
|
+ * reboot will cause the hardware to be unable to start correctly
|
||||||
|
+ * after rebooting.
|
||||||
|
+ *
|
||||||
|
+ * This happens with Tinkerboard systems...
|
||||||
|
+ */
|
||||||
|
+static int dw_mci_rockchip_broken_boards_reset_nb(
|
||||||
|
+ struct notifier_block *this,
|
||||||
|
+ unsigned long mode, void *cmd)
|
||||||
|
+{
|
||||||
|
+ struct dw_mci_rockchip_broken_boards_data const *data =
|
||||||
|
+ container_of(this,
|
||||||
|
+ struct dw_mci_rockchip_broken_boards_data,
|
||||||
|
+ reset_nb);
|
||||||
|
+ struct dw_mci *host = platform_get_drvdata(data->pdev);
|
||||||
|
+ struct mmc_host *mmc = host->slot->mmc;
|
||||||
|
+
|
||||||
|
+ printk(KERN_ERR "Meow.\n");
|
||||||
|
+
|
||||||
|
+ mmc_power_off(mmc);
|
||||||
|
+
|
||||||
|
+ mdelay(20);
|
||||||
|
+
|
||||||
|
+ if (!IS_ERR(mmc->supply.vmmc))
|
||||||
|
+ regulator_enable(mmc->supply.vmmc);
|
||||||
|
+
|
||||||
|
+ if (!IS_ERR(mmc->supply.vqmmc))
|
||||||
|
+ regulator_set_voltage(mmc->supply.vqmmc, 3000000, 3300000);
|
||||||
|
+
|
||||||
|
+ printk(KERN_ERR "woeM.\n");
|
||||||
|
+
|
||||||
|
+ return NOTIFY_DONE;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static void dw_mci_rockchip_register_broken_boards_reboot_handler(
|
||||||
|
+ struct platform_device *pdev)
|
||||||
|
+{
|
||||||
|
+ struct dw_mci_rockchip_broken_boards_data *data;
|
||||||
|
+
|
||||||
|
+ if (!of_machine_is_compatible("asus,rk3288-tinker"))
|
||||||
|
+ return;
|
||||||
|
+
|
||||||
|
+ data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL);
|
||||||
|
+
|
||||||
|
+ if (!data)
|
||||||
|
+ return;
|
||||||
|
+
|
||||||
|
+ data->reset_nb.notifier_call =
|
||||||
|
+ dw_mci_rockchip_broken_boards_reset_nb;
|
||||||
|
+ data->reset_nb.priority = 255;
|
||||||
|
+ register_restart_handler(&data->reset_nb);
|
||||||
|
+
|
||||||
|
+ data->pdev = pdev;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static int dw_mci_rockchip_probe(struct platform_device *pdev)
|
||||||
|
{
|
||||||
|
const struct dw_mci_drv_data *drv_data;
|
||||||
|
@@ -357,6 +422,7 @@ static int dw_mci_rockchip_probe(struct platform_device *pdev)
|
||||||
|
}
|
||||||
|
|
||||||
|
pm_runtime_put_autosuspend(&pdev->dev);
|
||||||
|
+ dw_mci_rockchip_register_broken_boards_reboot_handler(pdev);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.36.1
|
||||||
|
|
@@ -1,98 +0,0 @@
|
|||||||
From ee7f0a678fff8316ec0be973f1b3780a63f50942 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Myy Miouyouyou <myy@miouyouyou.fr>
|
|
||||||
Date: Mon, 11 Dec 2017 21:04:56 +0100
|
|
||||||
Subject: [PATCH] gpu: arm: Midgard: setup_timer() -> timer_setup()
|
|
||||||
|
|
||||||
This patch is due the changes provoked by series of commit ending
|
|
||||||
at 513ae785c63c30741e46f43960213d4ae5382ec0, and removing the
|
|
||||||
setup_timer macros.
|
|
||||||
The previous patches replaced made sure that timers were all set
|
|
||||||
up with setup_timer and replaced setup_timer calls by timer_setup
|
|
||||||
calls.
|
|
||||||
|
|
||||||
This changed was introduced in the 4.15-rc1.
|
|
||||||
|
|
||||||
Signed-off-by: Myy Miouyouyou <myy@miouyouyou.fr>
|
|
||||||
---
|
|
||||||
drivers/gpu/arm/midgard/mali_kbase.h | 2 +-
|
|
||||||
drivers/gpu/arm/midgard/mali_kbase_context.c | 4 ++--
|
|
||||||
drivers/gpu/arm/midgard/mali_kbase_softjobs.c | 4 ++--
|
|
||||||
drivers/gpu/arm/midgard/mali_kbase_tlstream.c | 6 ++----
|
|
||||||
4 files changed, 7 insertions(+), 9 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/gpu/arm/midgard/mali_kbase.h b/drivers/gpu/arm/midgard/mali_kbase.h
|
|
||||||
index a4ceab9e0..27bde3b71 100644
|
|
||||||
--- a/drivers/gpu/arm/midgard/mali_kbase.h
|
|
||||||
+++ b/drivers/gpu/arm/midgard/mali_kbase.h
|
|
||||||
@@ -213,7 +213,7 @@ int kbase_soft_event_update(struct kbase_context *kctx,
|
|
||||||
|
|
||||||
bool kbase_replay_process(struct kbase_jd_atom *katom);
|
|
||||||
|
|
||||||
-void kbasep_soft_job_timeout_worker(unsigned long data);
|
|
||||||
+void kbasep_soft_job_timeout_worker(struct timer_list *t);
|
|
||||||
void kbasep_complete_triggered_soft_events(struct kbase_context *kctx, u64 evt);
|
|
||||||
|
|
||||||
/* api used internally for register access. Contains validation and tracing */
|
|
||||||
diff --git a/drivers/gpu/arm/midgard/mali_kbase_context.c b/drivers/gpu/arm/midgard/mali_kbase_context.c
|
|
||||||
index f43db48fd..589df768c 100644
|
|
||||||
--- a/drivers/gpu/arm/midgard/mali_kbase_context.c
|
|
||||||
+++ b/drivers/gpu/arm/midgard/mali_kbase_context.c
|
|
||||||
@@ -165,9 +165,9 @@ kbase_create_context(struct kbase_device *kbdev, bool is_compat)
|
|
||||||
|
|
||||||
mutex_init(&kctx->vinstr_cli_lock);
|
|
||||||
|
|
||||||
- setup_timer(&kctx->soft_job_timeout,
|
|
||||||
+ timer_setup(&kctx->soft_job_timeout,
|
|
||||||
kbasep_soft_job_timeout_worker,
|
|
||||||
- (uintptr_t)kctx);
|
|
||||||
+ 0);
|
|
||||||
|
|
||||||
return kctx;
|
|
||||||
|
|
||||||
diff --git a/drivers/gpu/arm/midgard/mali_kbase_softjobs.c b/drivers/gpu/arm/midgard/mali_kbase_softjobs.c
|
|
||||||
index 127ada07f..019edf562 100644
|
|
||||||
--- a/drivers/gpu/arm/midgard/mali_kbase_softjobs.c
|
|
||||||
+++ b/drivers/gpu/arm/midgard/mali_kbase_softjobs.c
|
|
||||||
@@ -370,9 +370,9 @@ static void kbase_fence_debug_timeout(struct kbase_jd_atom *katom)
|
|
||||||
}
|
|
||||||
#endif /* CONFIG_MALI_FENCE_DEBUG */
|
|
||||||
|
|
||||||
-void kbasep_soft_job_timeout_worker(unsigned long data)
|
|
||||||
+void kbasep_soft_job_timeout_worker(struct timer_list *t)
|
|
||||||
{
|
|
||||||
- struct kbase_context *kctx = (struct kbase_context *)data;
|
|
||||||
+ struct kbase_context *kctx = from_timer(kctx, t, soft_job_timeout);
|
|
||||||
u32 timeout_ms = (u32)atomic_read(
|
|
||||||
&kctx->kbdev->js_data.soft_job_timeout_ms);
|
|
||||||
struct timer_list *timer = &kctx->soft_job_timeout;
|
|
||||||
diff --git a/drivers/gpu/arm/midgard/mali_kbase_tlstream.c b/drivers/gpu/arm/midgard/mali_kbase_tlstream.c
|
|
||||||
index d01aa23b2..11d8b59c7 100644
|
|
||||||
--- a/drivers/gpu/arm/midgard/mali_kbase_tlstream.c
|
|
||||||
+++ b/drivers/gpu/arm/midgard/mali_kbase_tlstream.c
|
|
||||||
@@ -1042,13 +1042,11 @@ static void kbasep_tlstream_flush_stream(enum tl_stream_type stype)
|
|
||||||
* Timer is executed periodically to check if any of the stream contains
|
|
||||||
* buffer ready to be submitted to user space.
|
|
||||||
*/
|
|
||||||
-static void kbasep_tlstream_autoflush_timer_callback(unsigned long data)
|
|
||||||
+static void kbasep_tlstream_autoflush_timer_callback(struct timer_list *unused)
|
|
||||||
{
|
|
||||||
enum tl_stream_type stype;
|
|
||||||
int rcode;
|
|
||||||
|
|
||||||
- CSTD_UNUSED(data);
|
|
||||||
-
|
|
||||||
for (stype = 0; stype < TL_STREAM_TYPE_COUNT; stype++) {
|
|
||||||
struct tl_stream *stream = tl_stream[stype];
|
|
||||||
unsigned long flags;
|
|
||||||
@@ -1371,7 +1369,7 @@ int kbase_tlstream_init(void)
|
|
||||||
|
|
||||||
/* Initialize autoflush timer. */
|
|
||||||
atomic_set(&autoflush_timer_active, 0);
|
|
||||||
- setup_timer(&autoflush_timer,
|
|
||||||
+ timer_setup(&autoflush_timer,
|
|
||||||
kbasep_tlstream_autoflush_timer_callback,
|
|
||||||
0);
|
|
||||||
|
|
||||||
--
|
|
||||||
2.14.1
|
|
||||||
|
|
@@ -0,0 +1,63 @@
|
|||||||
|
From 392472dc977300a9f2a62159c105a6dfed878643 Mon Sep 17 00:00:00 2001
|
||||||
|
Message-Id: <392472dc977300a9f2a62159c105a6dfed878643.1652225232.git.stefan@agner.ch>
|
||||||
|
In-Reply-To: <ff0c5c49024da05b47d4fcc4d115761c43eef7a6.1652225232.git.stefan@agner.ch>
|
||||||
|
References: <ff0c5c49024da05b47d4fcc4d115761c43eef7a6.1652225232.git.stefan@agner.ch>
|
||||||
|
From: Stefan Agner <stefan@agner.ch>
|
||||||
|
Date: Tue, 10 May 2022 22:57:26 +0200
|
||||||
|
Subject: [PATCH] ARM: dts: rockchip: Add Bluetooth to rk3288-tinker
|
||||||
|
|
||||||
|
Enable Bluetooth support via UART0. Use the existing bindings
|
||||||
|
for Realtek rtl8723bs Bluetooth device.
|
||||||
|
|
||||||
|
Signed-off-by: Stefan Agner <stefan@agner.ch>
|
||||||
|
---
|
||||||
|
arch/arm/boot/dts/rk3288-tinker.dtsi | 26 ++++++++++++++++++++++++++
|
||||||
|
1 file changed, 26 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/boot/dts/rk3288-tinker.dtsi b/arch/arm/boot/dts/rk3288-tinker.dtsi
|
||||||
|
index cdff130d1292..e904c130dedc 100644
|
||||||
|
--- a/arch/arm/boot/dts/rk3288-tinker.dtsi
|
||||||
|
+++ b/arch/arm/boot/dts/rk3288-tinker.dtsi
|
||||||
|
@@ -388,6 +388,20 @@ bl_en: bl-en {
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
+ bluetooth {
|
||||||
|
+ bt_enable_pin: bt-enable-pin {
|
||||||
|
+ rockchip,pins = <4 RK_PD5 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ bt_device_wake_pin: bt-device-wake-pin {
|
||||||
|
+ rockchip,pins = <4 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ bt_host_wake_pin: bt-host-wake-pin {
|
||||||
|
+ rockchip,pins = <4 RK_PD7 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
buttons {
|
||||||
|
pwrbtn: pwrbtn {
|
||||||
|
rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||||
|
@@ -520,6 +534,18 @@ &tsadc {
|
||||||
|
|
||||||
|
&uart0 {
|
||||||
|
status = "okay";
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&uart0_xfer &uart0_cts &uart0_rts>;
|
||||||
|
+ uart-has-rtscts;
|
||||||
|
+
|
||||||
|
+ bluetooth {
|
||||||
|
+ compatible = "realtek,rtl8723bs-bt";
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&bt_device_wake_pin &bt_host_wake_pin &bt_enable_pin>;
|
||||||
|
+ enable-gpios = <&gpio4 RK_PD5 GPIO_ACTIVE_HIGH>;
|
||||||
|
+ device-wake-gpios = <&gpio4 RK_PD2 GPIO_ACTIVE_HIGH>;
|
||||||
|
+ host-wake-gpios = <&gpio4 RK_PD7 GPIO_ACTIVE_HIGH>;
|
||||||
|
+ };
|
||||||
|
};
|
||||||
|
|
||||||
|
&uart1 {
|
||||||
|
--
|
||||||
|
2.36.1
|
||||||
|
|
@@ -1,35 +0,0 @@
|
|||||||
From 44a5ba2e969adfb64c84f294c16490194988dcc7 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Myy Miouyouyou <myy@miouyouyou.fr>
|
|
||||||
Date: Sun, 24 Dec 2017 19:30:12 +0100
|
|
||||||
Subject: [PATCH] drivers: gpu: Arm: Midgard: Replace ACCESS_ONCE by READ_ONCE
|
|
||||||
|
|
||||||
The ACCESS_ONCE macro has now been removed in the 4.15.0-rc4,
|
|
||||||
and every ACCESS_ONCE call has been replaced by either READ_ONCE or
|
|
||||||
WRITE_ONCE calls.
|
|
||||||
Since the Midgard GPU drivers are not mainlined, the change
|
|
||||||
needs to be applied manually.
|
|
||||||
|
|
||||||
See commit b899a850431e2dd0943205a63a68573f3e312d0d and its parents,
|
|
||||||
for more informations.
|
|
||||||
|
|
||||||
Signed-off-by: Myy Miouyouyou <myy@miouyouyou.fr>
|
|
||||||
---
|
|
||||||
drivers/gpu/arm/midgard/mali_kbase_mem.h | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/gpu/arm/midgard/mali_kbase_mem.h b/drivers/gpu/arm/midgard/mali_kbase_mem.h
|
|
||||||
index e9a8d5dd6..eac685699 100644
|
|
||||||
--- a/drivers/gpu/arm/midgard/mali_kbase_mem.h
|
|
||||||
+++ b/drivers/gpu/arm/midgard/mali_kbase_mem.h
|
|
||||||
@@ -591,7 +591,7 @@ void kbase_mem_pool_free_pages(struct kbase_mem_pool *pool, size_t nr_pages,
|
|
||||||
*/
|
|
||||||
static inline size_t kbase_mem_pool_size(struct kbase_mem_pool *pool)
|
|
||||||
{
|
|
||||||
- return ACCESS_ONCE(pool->cur_size);
|
|
||||||
+ return READ_ONCE(pool->cur_size);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
--
|
|
||||||
2.14.1
|
|
||||||
|
|
@@ -1,32 +0,0 @@
|
|||||||
From 47e8aad9419ff8843a373c3e5aa2c9d261d8cd07 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Myy Miouyouyou <myy@miouyouyou.fr>
|
|
||||||
Date: Mon, 23 Apr 2018 20:54:13 +0200
|
|
||||||
Subject: [PATCH] gpu: arm: midgard: Remove sys_close references
|
|
||||||
|
|
||||||
sys_close is now replaced by ksys_close in an effort to remove
|
|
||||||
in-kernel system calls references.
|
|
||||||
|
|
||||||
See 2ca2a09d6215fd9621aa3e2db7cc9428a61f2911 and
|
|
||||||
https://lkml.org/lkml/2018/3/25/93 for more details.
|
|
||||||
|
|
||||||
Signed-off-by: Myy Miouyouyou <myy@miouyouyou.fr>
|
|
||||||
---
|
|
||||||
drivers/gpu/arm/midgard/mali_kbase_sync.h | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/gpu/arm/midgard/mali_kbase_sync.h b/drivers/gpu/arm/midgard/mali_kbase_sync.h
|
|
||||||
index de72147d..33b58059 100644
|
|
||||||
--- a/drivers/gpu/arm/midgard/mali_kbase_sync.h
|
|
||||||
+++ b/drivers/gpu/arm/midgard/mali_kbase_sync.h
|
|
||||||
@@ -156,7 +156,7 @@ void kbase_sync_fence_out_remove(struct kbase_jd_atom *katom);
|
|
||||||
*/
|
|
||||||
static inline void kbase_sync_fence_close_fd(int fd)
|
|
||||||
{
|
|
||||||
- sys_close(fd);
|
|
||||||
+ ksys_close(fd);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
--
|
|
||||||
2.14.1
|
|
||||||
|
|
@@ -1,34 +0,0 @@
|
|||||||
From 9812105eb6220863af05fc72591118f0a48e1c4e Mon Sep 17 00:00:00 2001
|
|
||||||
From: Myy Miouyouyou <myy@miouyouyou.fr>
|
|
||||||
Date: Mon, 21 May 2018 22:32:59 +0200
|
|
||||||
Subject: [PATCH] GPU: ARM: Midgard: Adapt to the new mmap call checks.
|
|
||||||
|
|
||||||
Now, I don't know if this driver is just one of these "buggy" drivers
|
|
||||||
Linus is talking about, or if this is just standard GPU procedure.
|
|
||||||
|
|
||||||
Anyway, this patch is due to this change by Linus Torvalds :
|
|
||||||
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=be83bbf806822b1b89e0a0f23cd87cddc409e429
|
|
||||||
|
|
||||||
And the fix is inspired by :
|
|
||||||
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=76ef6b28ea4f81c3d511866a9b31392caa833126
|
|
||||||
|
|
||||||
Signed-off-by: Myy Miouyouyou <myy@miouyouyou.fr>
|
|
||||||
---
|
|
||||||
drivers/gpu/arm/midgard/mali_kbase_core_linux.c | 1 +
|
|
||||||
1 file changed, 1 insertion(+)
|
|
||||||
|
|
||||||
diff --git a/drivers/gpu/arm/midgard/mali_kbase_core_linux.c b/drivers/gpu/arm/midgard/mali_kbase_core_linux.c
|
|
||||||
index cc4932a4ead7..89b4cca27cf1 100644
|
|
||||||
--- a/drivers/gpu/arm/midgard/mali_kbase_core_linux.c
|
|
||||||
+++ b/drivers/gpu/arm/midgard/mali_kbase_core_linux.c
|
|
||||||
@@ -1087,6 +1087,7 @@ static int kbase_open(struct inode *inode, struct file *filp)
|
|
||||||
|
|
||||||
init_waitqueue_head(&kctx->event_queue);
|
|
||||||
filp->private_data = kctx;
|
|
||||||
+ filp->f_mode |= FMODE_UNSIGNED_OFFSET;
|
|
||||||
kctx->filp = filp;
|
|
||||||
|
|
||||||
if (kbdev->infinite_cache_active_default)
|
|
||||||
--
|
|
||||||
2.17.0
|
|
||||||
|
|
@@ -1,76 +0,0 @@
|
|||||||
From 9bf91a052d8ceddfd5808547a51e167fb7463754 Mon Sep 17 00:00:00 2001
|
|
||||||
From: "Miouyouyou (Myy)" <myy@miouyouyou.fr>
|
|
||||||
Date: Wed, 18 Jul 2018 19:59:21 +0200
|
|
||||||
Subject: [PATCH] GPU: Mali: Midgard: remove rcu_read_lock references
|
|
||||||
|
|
||||||
This patch is actually based on @mihailescu2m patch.
|
|
||||||
This removes references to rcu_read_lock when acquiring the OPP table,
|
|
||||||
as it is useless since.
|
|
||||||
See :
|
|
||||||
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/base/power/opp/core.c?id=5b650b388844f26c61c70564865598836d05dcb3
|
|
||||||
|
|
||||||
The current rcu_read_lock actually generates some issues with recent
|
|
||||||
kernels.
|
|
||||||
See here :
|
|
||||||
https://community.arm.com/graphics/f/discussions/9207/midgard-r20p0-kernel-drivers-errors
|
|
||||||
|
|
||||||
The patch has been recreated since it does not apply directly on r19p0
|
|
||||||
sources (I guess the affected line numbers slightly differ...).
|
|
||||||
|
|
||||||
@mihailescu2m patch for the Mali Midgard r20p0 kernel driver can be
|
|
||||||
acquired here :
|
|
||||||
https://github.com/mihailescu2m/linux/commit/bbe73c3c1143e5991bdcaee3afaecf5c31af0647
|
|
||||||
|
|
||||||
Signed-off-by: Miouyouyou (Myy) <myy@miouyouyou.fr>
|
|
||||||
---
|
|
||||||
drivers/gpu/arm/midgard/backend/gpu/mali_kbase_devfreq.c | 7 +------
|
|
||||||
1 file changed, 1 insertion(+), 6 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_devfreq.c b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_devfreq.c
|
|
||||||
index e280322e..bf69d897 100644
|
|
||||||
--- a/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_devfreq.c
|
|
||||||
+++ b/drivers/gpu/arm/midgard/backend/gpu/mali_kbase_devfreq.c
|
|
||||||
@@ -87,10 +87,9 @@ kbase_devfreq_target(struct device *dev, unsigned long *target_freq, u32 flags)
|
|
||||||
|
|
||||||
freq = *target_freq;
|
|
||||||
|
|
||||||
- rcu_read_lock();
|
|
||||||
opp = devfreq_recommended_opp(dev, &freq, flags);
|
|
||||||
voltage = dev_pm_opp_get_voltage(opp);
|
|
||||||
- rcu_read_unlock();
|
|
||||||
+
|
|
||||||
if (IS_ERR_OR_NULL(opp)) {
|
|
||||||
dev_err(dev, "Failed to get opp (%ld)\n", PTR_ERR(opp));
|
|
||||||
return PTR_ERR(opp);
|
|
||||||
@@ -186,20 +185,17 @@ static int kbase_devfreq_init_freq_table(struct kbase_device *kbdev,
|
|
||||||
unsigned long freq;
|
|
||||||
struct dev_pm_opp *opp;
|
|
||||||
|
|
||||||
- rcu_read_lock();
|
|
||||||
count = dev_pm_opp_get_opp_count(kbdev->dev);
|
|
||||||
if (count < 0) {
|
|
||||||
rcu_read_unlock();
|
|
||||||
return count;
|
|
||||||
}
|
|
||||||
- rcu_read_unlock();
|
|
||||||
|
|
||||||
dp->freq_table = kmalloc_array(count, sizeof(dp->freq_table[0]),
|
|
||||||
GFP_KERNEL);
|
|
||||||
if (!dp->freq_table)
|
|
||||||
return -ENOMEM;
|
|
||||||
|
|
||||||
- rcu_read_lock();
|
|
||||||
for (i = 0, freq = ULONG_MAX; i < count; i++, freq--) {
|
|
||||||
opp = dev_pm_opp_find_freq_floor(kbdev->dev, &freq);
|
|
||||||
if (IS_ERR(opp))
|
|
||||||
@@ -207,7 +203,6 @@ static int kbase_devfreq_init_freq_table(struct kbase_device *kbdev,
|
|
||||||
|
|
||||||
dp->freq_table[i] = freq;
|
|
||||||
}
|
|
||||||
- rcu_read_unlock();
|
|
||||||
|
|
||||||
if (count != i)
|
|
||||||
dev_warn(kbdev->dev, "Unable to enumerate all OPPs (%d!=%d\n",
|
|
||||||
--
|
|
||||||
2.16.4
|
|
||||||
|
|
@@ -1,74 +0,0 @@
|
|||||||
Patches act8846 regulator providing the proper reset handle and exploit
|
|
||||||
the SIPC bit in GLB_POWER_OFF register. Mainly used to reset some rockchip
|
|
||||||
boards.
|
|
||||||
|
|
||||||
Origin: <https://patchwork.kernel.org/patch/6409521/>
|
|
||||||
|
|
||||||
diff --git a/drivers/regulator/act8865-regulator.c b/drivers/regulator/act8865-regulator.c
|
|
||||||
index 2ff73d7..836d10b 100644
|
|
||||||
--- a/drivers/regulator/act8865-regulator.c
|
|
||||||
+++ b/drivers/regulator/act8865-regulator.c
|
|
||||||
@@ -27,6 +27,7 @@
|
|
||||||
#include <linux/of_device.h>
|
|
||||||
#include <linux/regulator/of_regulator.h>
|
|
||||||
#include <linux/regmap.h>
|
|
||||||
+#include <linux/reboot.h>
|
|
||||||
|
|
||||||
/*
|
|
||||||
* ACT8600 Global Register Map.
|
|
||||||
@@ -133,6 +134,8 @@
|
|
||||||
#define ACT8865_VOLTAGE_NUM 64
|
|
||||||
#define ACT8600_SUDCDC_VOLTAGE_NUM 255
|
|
||||||
|
|
||||||
+#define ACT8846_SIPC_MASK 0x01
|
|
||||||
+
|
|
||||||
struct act8865 {
|
|
||||||
struct regmap *regmap;
|
|
||||||
int off_reg;
|
|
||||||
@@ -402,6 +405,22 @@ static void act8865_power_off(void)
|
|
||||||
while (1);
|
|
||||||
}
|
|
||||||
|
|
||||||
+static int act8846_power_cycle(struct notifier_block *this,
|
|
||||||
+ unsigned long code, void *unused)
|
|
||||||
+{
|
|
||||||
+ struct act8865 *act8846;
|
|
||||||
+
|
|
||||||
+ act8846 = i2c_get_clientdata(act8865_i2c_client);
|
|
||||||
+ regmap_write(act8846->regmap, ACT8846_GLB_OFF_CTRL, ACT8846_SIPC_MASK);
|
|
||||||
+
|
|
||||||
+ return NOTIFY_DONE;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static struct notifier_block act8846_restart_handler = {
|
|
||||||
+ .notifier_call = act8846_power_cycle,
|
|
||||||
+ .priority = 129,
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
static int act8865_pmic_probe(struct i2c_client *client,
|
|
||||||
const struct i2c_device_id *i2c_id)
|
|
||||||
{
|
|
||||||
@@ -484,6 +503,8 @@ static int act8865_pmic_probe(struct i2c_client *client,
|
|
||||||
}
|
|
||||||
|
|
||||||
if (of_device_is_system_power_controller(dev->of_node)) {
|
|
||||||
+ int ret;
|
|
||||||
+
|
|
||||||
if (!pm_power_off && (off_reg > 0)) {
|
|
||||||
act8865_i2c_client = client;
|
|
||||||
act8865->off_reg = off_reg;
|
|
||||||
@@ -492,6 +513,14 @@ static int act8865_pmic_probe(struct i2c_client *client,
|
|
||||||
} else {
|
|
||||||
dev_err(dev, "Failed to set poweroff capability, already defined\n");
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+ if (type == ACT8846) {
|
|
||||||
+ act8865_i2c_client = client;
|
|
||||||
+ ret = register_restart_handler(&act8846_restart_handler);
|
|
||||||
+ if (ret)
|
|
||||||
+ pr_err("%s: cannot register restart handler, %d\n",
|
|
||||||
+ __func__, ret);
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Finally register devices */
|
|
@@ -1,39 +0,0 @@
|
|||||||
From fe85565d9ed8212cbda2148d4731418a36a8d088 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Myy Miouyouyou <myy@miouyouyou.fr>
|
|
||||||
Date: Mon, 11 Dec 2017 21:53:28 +0100
|
|
||||||
Subject: [PATCH 1/3] drivers: Integrating Mali Midgard video and gpu drivers.
|
|
||||||
|
|
||||||
I'm dropping the UMP drivers. They are not maintained.
|
|
||||||
|
|
||||||
Signed-off-by: Myy Miouyouyou <myy@miouyouyou.fr>
|
|
||||||
---
|
|
||||||
drivers/gpu/Makefile | 2 +-
|
|
||||||
drivers/video/Kconfig | 1 +
|
|
||||||
2 files changed, 2 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/gpu/Makefile b/drivers/gpu/Makefile
|
|
||||||
index e9ed439a5..66386b42a 100644
|
|
||||||
--- a/drivers/gpu/Makefile
|
|
||||||
+++ b/drivers/gpu/Makefile
|
|
||||||
@@ -2,5 +2,5 @@
|
|
||||||
# taken to initialize them in the correct order. Link order is the only way
|
|
||||||
# to ensure this currently.
|
|
||||||
obj-$(CONFIG_TEGRA_HOST1X) += host1x/
|
|
||||||
-obj-y += drm/ vga/
|
|
||||||
+obj-y += drm/ vga/ arm/
|
|
||||||
obj-$(CONFIG_IMX_IPUV3_CORE) += ipu-v3/
|
|
||||||
diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig
|
|
||||||
index 3c20af999..041e15f2c 100644
|
|
||||||
--- a/drivers/video/Kconfig
|
|
||||||
+++ b/drivers/video/Kconfig
|
|
||||||
@@ -17,6 +17,7 @@ source "drivers/gpu/vga/Kconfig"
|
|
||||||
|
|
||||||
source "drivers/gpu/host1x/Kconfig"
|
|
||||||
source "drivers/gpu/ipu-v3/Kconfig"
|
|
||||||
+source "drivers/gpu/arm/midgard/Kconfig"
|
|
||||||
|
|
||||||
source "drivers/gpu/drm/Kconfig"
|
|
||||||
|
|
||||||
--
|
|
||||||
2.14.1
|
|
||||||
|
|
@@ -1,50 +0,0 @@
|
|||||||
From e0c5a419cf5464cd02996431afa98e3b22dc6801 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Myy <myy@miouyouyou.fr>
|
|
||||||
Date: Mon, 17 Jul 2017 23:14:48 +0000
|
|
||||||
Subject: [PATCH] clk: rockchip: add all known operating points to the allowed
|
|
||||||
CPU freqs
|
|
||||||
|
|
||||||
Patch from Willy Tarreau
|
|
||||||
|
|
||||||
Original commit message :
|
|
||||||
At least 1920 MHz runs stable on the MiQi even on openssl speed -multi 4,
|
|
||||||
which is by far the most intensive workload, and 1992/2016 work fine on
|
|
||||||
the CS-008 until it starts to heat too much. So add all of them so that
|
|
||||||
the device tree can simply manipulate them.
|
|
||||||
|
|
||||||
Signed-off-by: Myy <myy@miouyouyou.fr>
|
|
||||||
---
|
|
||||||
drivers/clk/rockchip/clk-rk3288.c | 17 +++++++++++++++++
|
|
||||||
1 file changed, 17 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/drivers/clk/rockchip/clk-rk3288.c b/drivers/clk/rockchip/clk-rk3288.c
|
|
||||||
index 753c649..fd2058f 100644
|
|
||||||
--- a/drivers/clk/rockchip/clk-rk3288.c
|
|
||||||
+++ b/drivers/clk/rockchip/clk-rk3288.c
|
|
||||||
@@ -145,6 +145,23 @@ static struct rockchip_pll_rate_table rk3288_pll_rates[] = {
|
|
||||||
}
|
|
||||||
|
|
||||||
static struct rockchip_cpuclk_rate_table rk3288_cpuclk_rates[] __initdata = {
|
|
||||||
+ RK3288_CPUCLK_RATE(2208000000U, 1, 3, 1, 3, 3),
|
|
||||||
+ RK3288_CPUCLK_RATE(2184000000U, 1, 3, 1, 3, 3),
|
|
||||||
+ RK3288_CPUCLK_RATE(2160000000U, 1, 3, 1, 3, 3),
|
|
||||||
+ RK3288_CPUCLK_RATE(2136000000, 1, 3, 1, 3, 3),
|
|
||||||
+ RK3288_CPUCLK_RATE(2112000000, 1, 3, 1, 3, 3),
|
|
||||||
+ RK3288_CPUCLK_RATE(2088000000, 1, 3, 1, 3, 3),
|
|
||||||
+ RK3288_CPUCLK_RATE(2064000000, 1, 3, 1, 3, 3),
|
|
||||||
+ RK3288_CPUCLK_RATE(2040000000, 1, 3, 1, 3, 3),
|
|
||||||
+ RK3288_CPUCLK_RATE(2016000000, 1, 3, 1, 3, 3),
|
|
||||||
+ RK3288_CPUCLK_RATE(1992000000, 1, 3, 1, 3, 3),
|
|
||||||
+ RK3288_CPUCLK_RATE(1968000000, 1, 3, 1, 3, 3),
|
|
||||||
+ RK3288_CPUCLK_RATE(1944000000, 1, 3, 1, 3, 3),
|
|
||||||
+ RK3288_CPUCLK_RATE(1920000000, 1, 3, 1, 3, 3),
|
|
||||||
+ RK3288_CPUCLK_RATE(1896000000, 1, 3, 1, 3, 3),
|
|
||||||
+ RK3288_CPUCLK_RATE(1872000000, 1, 3, 1, 3, 3),
|
|
||||||
+ RK3288_CPUCLK_RATE(1848000000, 1, 3, 1, 3, 3),
|
|
||||||
+ RK3288_CPUCLK_RATE(1824000000, 1, 3, 1, 3, 3),
|
|
||||||
RK3288_CPUCLK_RATE(1800000000, 1, 3, 1, 3, 3),
|
|
||||||
RK3288_CPUCLK_RATE(1704000000, 1, 3, 1, 3, 3),
|
|
||||||
RK3288_CPUCLK_RATE(1608000000, 1, 3, 1, 3, 3),
|
|
||||||
--
|
|
||||||
2.10.2
|
|
||||||
|
|
@@ -1,30 +0,0 @@
|
|||||||
From 239a5e3016b7f676bc3f56ea509ed172bf954001 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Myy <myy@miouyouyou.fr>
|
|
||||||
Date: Sat, 22 Jul 2017 04:07:36 +0000
|
|
||||||
Subject: [PATCH] Remove the dependency to the clk_mali symbol.
|
|
||||||
|
|
||||||
Inspired by @wzzy2 patch
|
|
||||||
|
|
||||||
https://github.com/rockchip-linux/rockchip_forwardports/commit/359865c617129fe5fcc5530f4a88abcfaa6a5cb4
|
|
||||||
|
|
||||||
Signed-off-by: Myy <myy@miouyouyou.fr>
|
|
||||||
---
|
|
||||||
drivers/gpu/arm/midgard/mali_kbase_core_linux.c | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/gpu/arm/midgard/mali_kbase_core_linux.c b/drivers/gpu/arm/midgard/mali_kbase_core_linux.c
|
|
||||||
index 9cc65d2..27dcd9c 100644
|
|
||||||
--- a/drivers/gpu/arm/midgard/mali_kbase_core_linux.c
|
|
||||||
+++ b/drivers/gpu/arm/midgard/mali_kbase_core_linux.c
|
|
||||||
@@ -3793,7 +3793,7 @@ static int power_control_init(struct platform_device *pdev)
|
|
||||||
}
|
|
||||||
#endif /* LINUX_VERSION_CODE >= 3, 12, 0 */
|
|
||||||
|
|
||||||
- kbdev->clock = clk_get(kbdev->dev, "clk_mali");
|
|
||||||
+ kbdev->clock = of_clk_get(kbdev->dev->of_node, 0);
|
|
||||||
if (IS_ERR_OR_NULL(kbdev->clock)) {
|
|
||||||
err = PTR_ERR(kbdev->clock);
|
|
||||||
kbdev->clock = NULL;
|
|
||||||
--
|
|
||||||
2.10.2
|
|
||||||
|
|
@@ -1,157 +0,0 @@
|
|||||||
From bf9b932f6ae506baf5b79c8407089448ed77fc56 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Myy Miouyouyou <myy@miouyouyou.fr>
|
|
||||||
Date: Sun, 17 Dec 2017 16:15:03 +0100
|
|
||||||
Subject: [PATCH] ASUS Tinkerboard: Stupid reboot patch
|
|
||||||
|
|
||||||
This patch is ugly as shit and will be reworked when possible.
|
|
||||||
|
|
||||||
Meanwhile, this fixes an issue with the ASUS Tinkerboard which
|
|
||||||
cannot reboot correctly. The issue is that the MMC hardware is
|
|
||||||
shutdown during the reboot phase and is not powered again after
|
|
||||||
the power cycle, leading to a dead board awaiting a hard power
|
|
||||||
cycle.
|
|
||||||
|
|
||||||
Signed-off-by: Myy Miouyouyou <myy@miouyouyou.fr>
|
|
||||||
---
|
|
||||||
drivers/mmc/host/dw_mmc-rockchip.c | 24 ++++++++++++++++++++++++
|
|
||||||
drivers/mmc/host/dw_mmc.c | 28 ++++++++++++++++++++++++++++
|
|
||||||
include/linux/reboot.h | 2 ++
|
|
||||||
kernel/reboot.c | 1 +
|
|
||||||
4 files changed, 55 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/drivers/mmc/host/dw_mmc-rockchip.c b/drivers/mmc/host/dw_mmc-rockchip.c
|
|
||||||
index a3f1c2b30..52c13733f 100644
|
|
||||||
--- a/drivers/mmc/host/dw_mmc-rockchip.c
|
|
||||||
+++ b/drivers/mmc/host/dw_mmc-rockchip.c
|
|
||||||
@@ -14,10 +14,12 @@
|
|
||||||
#include <linux/of_address.h>
|
|
||||||
#include <linux/mmc/slot-gpio.h>
|
|
||||||
#include <linux/pm_runtime.h>
|
|
||||||
+#include <linux/regulator/consumer.h> // Stupid Tinkerboard Hack
|
|
||||||
#include <linux/slab.h>
|
|
||||||
|
|
||||||
#include "dw_mmc.h"
|
|
||||||
#include "dw_mmc-pltfm.h"
|
|
||||||
+#include "../core/core.h" // Stupid Tinkerboard Hack
|
|
||||||
|
|
||||||
#define RK3288_CLKGEN_DIV 2
|
|
||||||
|
|
||||||
@@ -365,6 +367,27 @@ static int dw_mci_rockchip_probe(struct platform_device *pdev)
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
+/* Stupid Tinkerboard Hack */
|
|
||||||
+static void dw_mci_rockchip_platfm_shutdown(struct platform_device *pdev)
|
|
||||||
+{
|
|
||||||
+ struct dw_mci *host = platform_get_drvdata(pdev);
|
|
||||||
+ struct mmc_host *mmc = host->slot->mmc;
|
|
||||||
+ int ret;
|
|
||||||
+
|
|
||||||
+ if(of_machine_is_compatible("asus,rk3288-tinker")){
|
|
||||||
+
|
|
||||||
+ mmc_power_off(mmc);
|
|
||||||
+
|
|
||||||
+ mdelay(20);
|
|
||||||
+
|
|
||||||
+ if (!IS_ERR(mmc->supply.vmmc))
|
|
||||||
+ ret = regulator_enable(mmc->supply.vmmc);
|
|
||||||
+
|
|
||||||
+ if (!IS_ERR(mmc->supply.vqmmc))
|
|
||||||
+ regulator_set_voltage(mmc->supply.vqmmc, 3000000, 3300000);
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
static int dw_mci_rockchip_remove(struct platform_device *pdev)
|
|
||||||
{
|
|
||||||
pm_runtime_get_sync(&pdev->dev);
|
|
||||||
@@ -385,6 +408,7 @@ static const struct dev_pm_ops dw_mci_rockchip_dev_pm_ops = {
|
|
||||||
static struct platform_driver dw_mci_rockchip_pltfm_driver = {
|
|
||||||
.probe = dw_mci_rockchip_probe,
|
|
||||||
.remove = dw_mci_rockchip_remove,
|
|
||||||
+ .shutdown = dw_mci_rockchip_platfm_shutdown, // Stupid Tinkerboard Hack
|
|
||||||
.driver = {
|
|
||||||
.name = "dwmmc_rockchip",
|
|
||||||
.of_match_table = dw_mci_rockchip_match,
|
|
||||||
diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
|
|
||||||
index 0aa39975f..70f7ce21b 100644
|
|
||||||
--- a/drivers/mmc/host/dw_mmc.c
|
|
||||||
+++ b/drivers/mmc/host/dw_mmc.c
|
|
||||||
@@ -39,8 +39,10 @@
|
|
||||||
#include <linux/of.h>
|
|
||||||
#include <linux/of_gpio.h>
|
|
||||||
#include <linux/mmc/slot-gpio.h>
|
|
||||||
+#include <linux/reboot.h> // Stupid Tinkerboard Hack
|
|
||||||
|
|
||||||
#include "dw_mmc.h"
|
|
||||||
+#include "../core/core.h" // Stupid Tinkerboard Hack
|
|
||||||
|
|
||||||
/* Common flag combinations */
|
|
||||||
#define DW_MCI_DATA_ERROR_FLAGS (SDMMC_INT_DRTO | SDMMC_INT_DCRC | \
|
|
||||||
@@ -2778,6 +2780,29 @@ static irqreturn_t dw_mci_interrupt(int irq, void *dev_id)
|
|
||||||
return IRQ_HANDLED;
|
|
||||||
}
|
|
||||||
|
|
||||||
+/* Stupid Tinkerboard Hack */
|
|
||||||
+struct dw_mci *mSdhost;
|
|
||||||
+void setmmcEmergency() {
|
|
||||||
+ struct mmc_host *mmc;
|
|
||||||
+ int ret;
|
|
||||||
+
|
|
||||||
+ printk(KERN_ERR "Emergency route taken.\n");
|
|
||||||
+ if (of_machine_is_compatible("asus,rk3288-tinker")) {
|
|
||||||
+ mmc = mSdhost->slot->mmc;
|
|
||||||
+
|
|
||||||
+ mmc_power_off(mmc);
|
|
||||||
+
|
|
||||||
+ mdelay(20);
|
|
||||||
+
|
|
||||||
+ if (!IS_ERR(mmc->supply.vmmc))
|
|
||||||
+ ret = regulator_enable(mmc->supply.vmmc);
|
|
||||||
+
|
|
||||||
+ if (!IS_ERR(mmc->supply.vqmmc))
|
|
||||||
+ regulator_set_voltage(mmc->supply.vqmmc, 3000000, 3300000);
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
+EXPORT_SYMBOL(setmmcEmergency);
|
|
||||||
+
|
|
||||||
static int dw_mci_init_slot(struct dw_mci *host)
|
|
||||||
{
|
|
||||||
struct mmc_host *mmc;
|
|
||||||
@@ -2809,6 +2834,9 @@ static int dw_mci_init_slot(struct dw_mci *host)
|
|
||||||
mmc->f_max = freq[1];
|
|
||||||
}
|
|
||||||
|
|
||||||
+ /* Stupid Tinkerboard Hack */
|
|
||||||
+ if (of_find_property(host->dev->of_node, "supports-sd", NULL))
|
|
||||||
+ mSdhost = host;
|
|
||||||
/*if there are external regulators, get them*/
|
|
||||||
ret = mmc_regulator_get_supply(mmc);
|
|
||||||
if (ret)
|
|
||||||
diff --git a/include/linux/reboot.h b/include/linux/reboot.h
|
|
||||||
index e63799a6e..057d3ce0c 100644
|
|
||||||
--- a/include/linux/reboot.h
|
|
||||||
+++ b/include/linux/reboot.h
|
|
||||||
@@ -77,6 +77,8 @@ extern char poweroff_cmd[POWEROFF_CMD_PATH_LEN];
|
|
||||||
|
|
||||||
extern void orderly_poweroff(bool force);
|
|
||||||
extern void orderly_reboot(void);
|
|
||||||
+/* Stupid Tinkerboard Hack */
|
|
||||||
+extern void setmmcEmergency(void);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Emergency restart, callable from an interrupt handler.
|
|
||||||
diff --git a/kernel/reboot.c b/kernel/reboot.c
|
|
||||||
index e4ced883d..c8e678ce6 100644
|
|
||||||
--- a/kernel/reboot.c
|
|
||||||
+++ b/kernel/reboot.c
|
|
||||||
@@ -61,6 +61,7 @@ void (*pm_power_off_prepare)(void);
|
|
||||||
void emergency_restart(void)
|
|
||||||
{
|
|
||||||
kmsg_dump(KMSG_DUMP_EMERG);
|
|
||||||
+ setmmcEmergency(); // Stupid Tinkerboard Hack
|
|
||||||
machine_emergency_restart();
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL_GPL(emergency_restart);
|
|
||||||
--
|
|
||||||
2.14.1
|
|
||||||
|
|
@@ -1,116 +0,0 @@
|
|||||||
From 302cd9b8a9f1f8a7735fabea3b9a7645dc40f9cc Mon Sep 17 00:00:00 2001
|
|
||||||
From: Myy Miouyouyou <myy@miouyouyou.fr>
|
|
||||||
Date: Sun, 7 Jan 2018 01:52:44 +0100
|
|
||||||
Subject: [PATCH] drivers: mmc: dw-mci-rockchip: Handle ASUS Tinkerboard reboot
|
|
||||||
|
|
||||||
On ASUS Tinkerboard systems, if the SDMMC hardware is shutdown before
|
|
||||||
rebooting, the system will be dead, as the SDMMC is the only way to
|
|
||||||
boot anything, and the hardware doesn't power up the SDMMC hardware
|
|
||||||
automatically when rebooting.
|
|
||||||
|
|
||||||
So, when using an ASUS Tinkerboard system, a new reboot handler is
|
|
||||||
installed. This reboot handler takes care of powering the SDMMC
|
|
||||||
hardware again before restarting the system, resolving the issue.
|
|
||||||
|
|
||||||
The code was inspired by the pwrseq_emmc.c, which seems to overcome
|
|
||||||
similar effects with eMMC hardware.
|
|
||||||
|
|
||||||
Signed-off-by: Myy Miouyouyou <myy@miouyouyou.fr>
|
|
||||||
---
|
|
||||||
drivers/mmc/host/dw_mmc-rockchip.c | 66 ++++++++++++++++++++++++++++++++++++++
|
|
||||||
1 file changed, 66 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/drivers/mmc/host/dw_mmc-rockchip.c b/drivers/mmc/host/dw_mmc-rockchip.c
|
|
||||||
index a3f1c2b30..7eac1f221 100644
|
|
||||||
--- a/drivers/mmc/host/dw_mmc-rockchip.c
|
|
||||||
+++ b/drivers/mmc/host/dw_mmc-rockchip.c
|
|
||||||
@@ -16,6 +16,11 @@
|
|
||||||
#include <linux/pm_runtime.h>
|
|
||||||
#include <linux/slab.h>
|
|
||||||
|
|
||||||
+#include <linux/regulator/consumer.h>
|
|
||||||
+#include <linux/reboot.h>
|
|
||||||
+#include <linux/delay.h>
|
|
||||||
+#include "../core/core.h"
|
|
||||||
+
|
|
||||||
#include "dw_mmc.h"
|
|
||||||
#include "dw_mmc-pltfm.h"
|
|
||||||
|
|
||||||
@@ -334,6 +339,66 @@ static const struct of_device_id dw_mci_rockchip_match[] = {
|
|
||||||
};
|
|
||||||
MODULE_DEVICE_TABLE(of, dw_mci_rockchip_match);
|
|
||||||
|
|
||||||
+struct dw_mci_rockchip_broken_boards_data {
|
|
||||||
+ struct notifier_block reset_nb;
|
|
||||||
+ struct platform_device *pdev;
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+/* This reboot handler handles cases where disabling the SDMMC on
|
|
||||||
+ * reboot will cause the hardware to be unable to start correctly
|
|
||||||
+ * after rebooting.
|
|
||||||
+ *
|
|
||||||
+ * This happens with Tinkerboard systems...
|
|
||||||
+ */
|
|
||||||
+static int dw_mci_rockchip_broken_boards_reset_nb(
|
|
||||||
+ struct notifier_block *this,
|
|
||||||
+ unsigned long mode, void *cmd)
|
|
||||||
+{
|
|
||||||
+ struct dw_mci_rockchip_broken_boards_data const *data =
|
|
||||||
+ container_of(this,
|
|
||||||
+ struct dw_mci_rockchip_broken_boards_data,
|
|
||||||
+ reset_nb);
|
|
||||||
+ struct dw_mci *host = platform_get_drvdata(data->pdev);
|
|
||||||
+ struct mmc_host *mmc = host->slot->mmc;
|
|
||||||
+
|
|
||||||
+ printk(KERN_ERR "Meow.\n");
|
|
||||||
+
|
|
||||||
+ mmc_power_off(mmc);
|
|
||||||
+
|
|
||||||
+ mdelay(20);
|
|
||||||
+
|
|
||||||
+ if (!IS_ERR(mmc->supply.vmmc))
|
|
||||||
+ regulator_enable(mmc->supply.vmmc);
|
|
||||||
+
|
|
||||||
+ if (!IS_ERR(mmc->supply.vqmmc))
|
|
||||||
+ regulator_set_voltage(mmc->supply.vqmmc, 3000000, 3300000);
|
|
||||||
+
|
|
||||||
+ printk(KERN_ERR "woeM.\n");
|
|
||||||
+
|
|
||||||
+ return NOTIFY_DONE;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static void dw_mci_rockchip_register_broken_boards_reboot_handler(
|
|
||||||
+ struct platform_device *pdev)
|
|
||||||
+{
|
|
||||||
+ struct dw_mci_rockchip_broken_boards_data *data;
|
|
||||||
+
|
|
||||||
+ if (!of_machine_is_compatible("asus,rk3288-tinker"))
|
|
||||||
+ return;
|
|
||||||
+
|
|
||||||
+ data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL);
|
|
||||||
+
|
|
||||||
+ if (!data)
|
|
||||||
+ return;
|
|
||||||
+
|
|
||||||
+ data->reset_nb.notifier_call =
|
|
||||||
+ dw_mci_rockchip_broken_boards_reset_nb;
|
|
||||||
+ data->reset_nb.priority = 255;
|
|
||||||
+ register_restart_handler(&data->reset_nb);
|
|
||||||
+
|
|
||||||
+ data->pdev = pdev;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
static int dw_mci_rockchip_probe(struct platform_device *pdev)
|
|
||||||
{
|
|
||||||
const struct dw_mci_drv_data *drv_data;
|
|
||||||
@@ -361,6 +426,7 @@ static int dw_mci_rockchip_probe(struct platform_device *pdev)
|
|
||||||
}
|
|
||||||
|
|
||||||
pm_runtime_put_autosuspend(&pdev->dev);
|
|
||||||
+ dw_mci_rockchip_register_broken_boards_reboot_handler(pdev);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
--
|
|
||||||
2.14.1
|
|
||||||
|
|
@@ -1,82 +0,0 @@
|
|||||||
From 4ffe79de7272234408a9179aa4c403ee1b67a362 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Myy Miouyouyou <myy@miouyouyou.fr>
|
|
||||||
Date: Thu, 7 Dec 2017 21:27:52 +0100
|
|
||||||
Subject: [PATCH] soc: rockchip: power-domain: export idle request
|
|
||||||
|
|
||||||
We need to put the power status of HEVC/RKVDEC IP into IDLE
|
|
||||||
unless we can't reset that IP or the SoC would crash down.
|
|
||||||
rockchip_pmu_idle_request(dev, true)---> enter idle
|
|
||||||
rockchip_pmu_idle_request(dev, false)---> exit idle
|
|
||||||
|
|
||||||
Only the video codec drivers of rockchip platform would
|
|
||||||
request this patch currently.
|
|
||||||
|
|
||||||
I am not sure whether it is necessary to add a new function
|
|
||||||
at generic power domain. I want someone give me some advises
|
|
||||||
here.
|
|
||||||
|
|
||||||
Signed-off-by: Myy Miouyouyou <myy@miouyouyou.fr>
|
|
||||||
---
|
|
||||||
drivers/soc/rockchip/pm_domains.c | 23 +++++++++++++++++++++++
|
|
||||||
include/linux/rockchip_pmu.h | 15 +++++++++++++++
|
|
||||||
2 files changed, 38 insertions(+)
|
|
||||||
create mode 100644 include/linux/rockchip_pmu.h
|
|
||||||
|
|
||||||
diff --git a/drivers/soc/rockchip/pm_domains.c b/drivers/soc/rockchip/pm_domains.c
|
|
||||||
index 40b75748..0006ed53 100644
|
|
||||||
--- a/drivers/soc/rockchip/pm_domains.c
|
|
||||||
+++ b/drivers/soc/rockchip/pm_domains.c
|
|
||||||
@@ -180,6 +180,29 @@ static int rockchip_pmu_set_idle_request(struct rockchip_pm_domain *pd,
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
+int rockchip_pmu_idle_request(struct device *dev, bool idle)
|
|
||||||
+{
|
|
||||||
+ struct generic_pm_domain *genpd;
|
|
||||||
+ struct rockchip_pm_domain *pd;
|
|
||||||
+ int ret;
|
|
||||||
+
|
|
||||||
+ if (IS_ERR_OR_NULL(dev))
|
|
||||||
+ return -EINVAL;
|
|
||||||
+
|
|
||||||
+ if (IS_ERR_OR_NULL(dev->pm_domain))
|
|
||||||
+ return -EINVAL;
|
|
||||||
+
|
|
||||||
+ genpd = pd_to_genpd(dev->pm_domain);
|
|
||||||
+ pd = to_rockchip_pd(genpd);
|
|
||||||
+
|
|
||||||
+ mutex_lock(&pd->pmu->mutex);
|
|
||||||
+ ret = rockchip_pmu_set_idle_request(pd, idle);
|
|
||||||
+ mutex_unlock(&pd->pmu->mutex);
|
|
||||||
+
|
|
||||||
+ return ret;
|
|
||||||
+}
|
|
||||||
+EXPORT_SYMBOL(rockchip_pmu_idle_request);
|
|
||||||
+
|
|
||||||
static int rockchip_pmu_save_qos(struct rockchip_pm_domain *pd)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
diff --git a/include/linux/rockchip_pmu.h b/include/linux/rockchip_pmu.h
|
|
||||||
new file mode 100644
|
|
||||||
index 00000000..720b3314
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/include/linux/rockchip_pmu.h
|
|
||||||
@@ -0,0 +1,15 @@
|
|
||||||
+/*
|
|
||||||
+ * pm_domain.h - Definitions and headers related to device power domains.
|
|
||||||
+ *
|
|
||||||
+ * Copyright (C) 2017 Randy Li <ayaka@soulik.info>.
|
|
||||||
+ *
|
|
||||||
+ * This file is released under the GPLv2.
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+#ifndef _LINUX_ROCKCHIP_PM_H
|
|
||||||
+#define _LINUX_ROCKCHIP_PM_H
|
|
||||||
+#include <linux/device.h>
|
|
||||||
+
|
|
||||||
+int rockchip_pmu_idle_request(struct device *dev, bool idle);
|
|
||||||
+
|
|
||||||
+#endif /* _LINUX_ROCKCHIP_PM_H */
|
|
||||||
--
|
|
||||||
2.14.1
|
|
||||||
|
|
@@ -1,228 +0,0 @@
|
|||||||
From bc16cd0aa3cdaaff27b9bf2d3282ccfff81d8784 Mon Sep 17 00:00:00 2001
|
|
||||||
From: "Miouyouyou (Myy)" <myy@miouyouyou.fr>
|
|
||||||
Date: Sat, 29 Sep 2018 02:56:32 +0200
|
|
||||||
Subject: [PATCH 5/6] drivers: clk-rk3288: support for dedicating NPLL to a VOP
|
|
||||||
|
|
||||||
This patch is taken from Urja Rannikko ( @urjaman ) patchset here :
|
|
||||||
https://github.com/urjaman/arch-c201/blob/master/linux-c201/0020-RK3288-HDMI-clock-hacks-combined.patch
|
|
||||||
https://www.spinics.net/lists/arm-kernel/msg673156.html
|
|
||||||
|
|
||||||
I'm not really sure what this does exactly. It basically sets the
|
|
||||||
parent clock of the newly added clocks, if the newly added property
|
|
||||||
"rockchip,npll-for-vop" is detected and set.
|
|
||||||
|
|
||||||
I have no clear idea how HDMI Neuronal PLL (and PLL in general) work,
|
|
||||||
so I cannot comment on what it's doing and if it's a good idea in
|
|
||||||
general.
|
|
||||||
|
|
||||||
The only thing I know from this patchset is that it works and have
|
|
||||||
resolved some purple line issue at the left of my HDMI screen, when
|
|
||||||
connected to MiQi or Tinkerboard devices.
|
|
||||||
|
|
||||||
Signed-off-by: Miouyouyou (Myy) <myy@miouyouyou.fr>
|
|
||||||
---
|
|
||||||
drivers/clk/rockchip/clk-rk3288.c | 98 ++++++++++++++++++++++++++++++++-------
|
|
||||||
drivers/clk/rockchip/clk.h | 3 ++
|
|
||||||
2 files changed, 85 insertions(+), 16 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/clk/rockchip/clk-rk3288.c b/drivers/clk/rockchip/clk-rk3288.c
|
|
||||||
index fd2058f7d..b5b56169d 100644
|
|
||||||
--- a/drivers/clk/rockchip/clk-rk3288.c
|
|
||||||
+++ b/drivers/clk/rockchip/clk-rk3288.c
|
|
||||||
@@ -83,22 +83,43 @@ static struct rockchip_pll_rate_table rk3288_pll_rates[] = {
|
|
||||||
RK3066_PLL_RATE( 768000000, 1, 64, 2),
|
|
||||||
RK3066_PLL_RATE( 742500000, 8, 495, 2),
|
|
||||||
RK3066_PLL_RATE( 696000000, 1, 58, 2),
|
|
||||||
+ RK3066_PLL_RATE_NB(621000000, 1, 207, 8, 1),
|
|
||||||
RK3066_PLL_RATE( 600000000, 1, 50, 2),
|
|
||||||
RK3066_PLL_RATE_NB(594000000, 1, 198, 8, 1),
|
|
||||||
RK3066_PLL_RATE( 552000000, 1, 46, 2),
|
|
||||||
RK3066_PLL_RATE( 504000000, 1, 84, 4),
|
|
||||||
RK3066_PLL_RATE( 500000000, 3, 125, 2),
|
|
||||||
RK3066_PLL_RATE( 456000000, 1, 76, 4),
|
|
||||||
+ RK3066_PLL_RATE( 428000000, 1, 107, 6),
|
|
||||||
RK3066_PLL_RATE( 408000000, 1, 68, 4),
|
|
||||||
RK3066_PLL_RATE( 400000000, 3, 100, 2),
|
|
||||||
+ RK3066_PLL_RATE_NB( 394000000, 1, 197, 12, 1),
|
|
||||||
RK3066_PLL_RATE( 384000000, 2, 128, 4),
|
|
||||||
RK3066_PLL_RATE( 360000000, 1, 60, 4),
|
|
||||||
+ RK3066_PLL_RATE_NB( 356000000, 1, 178, 12, 1),
|
|
||||||
+ RK3066_PLL_RATE_NB( 324000000, 1, 189, 14, 1),
|
|
||||||
RK3066_PLL_RATE( 312000000, 1, 52, 4),
|
|
||||||
- RK3066_PLL_RATE( 300000000, 1, 50, 4),
|
|
||||||
- RK3066_PLL_RATE( 297000000, 2, 198, 8),
|
|
||||||
+ RK3066_PLL_RATE_NB( 308000000, 1, 154, 12, 1),
|
|
||||||
+ RK3066_PLL_RATE_NB( 303000000, 1, 202, 16, 1),
|
|
||||||
+ RK3066_PLL_RATE( 300000000, 1, 75, 6),
|
|
||||||
+ RK3066_PLL_RATE_NB( 297750000, 2, 397, 16, 1),
|
|
||||||
+ RK3066_PLL_RATE_NB( 293250000, 2, 391, 16, 1),
|
|
||||||
+ RK3066_PLL_RATE_NB( 292500000, 1, 195, 16, 1),
|
|
||||||
+ RK3066_PLL_RATE( 273600000, 1, 114, 10),
|
|
||||||
+ RK3066_PLL_RATE_NB( 273000000, 1, 182, 16, 1),
|
|
||||||
+ RK3066_PLL_RATE_NB( 270000000, 1, 180, 16, 1),
|
|
||||||
+ RK3066_PLL_RATE_NB( 266250000, 2, 355, 16, 1),
|
|
||||||
+ RK3066_PLL_RATE_NB( 256500000, 1, 171, 16, 1),
|
|
||||||
RK3066_PLL_RATE( 252000000, 1, 84, 8),
|
|
||||||
- RK3066_PLL_RATE( 216000000, 1, 72, 8),
|
|
||||||
- RK3066_PLL_RATE( 148500000, 2, 99, 8),
|
|
||||||
+ RK3066_PLL_RATE_NB( 250500000, 1, 167, 16, 1),
|
|
||||||
+ RK3066_PLL_RATE_NB( 243428571, 1, 142, 14, 1),
|
|
||||||
+ RK3066_PLL_RATE( 238000000, 1, 119, 12),
|
|
||||||
+ RK3066_PLL_RATE_NB( 219750000, 2, 293, 16, 1),
|
|
||||||
+ RK3066_PLL_RATE_NB( 216000000, 1, 144, 16, 1),
|
|
||||||
+ RK3066_PLL_RATE_NB( 213000000, 1, 142, 16, 1),
|
|
||||||
+ RK3066_PLL_RATE( 195428571, 1, 114, 14),
|
|
||||||
+ RK3066_PLL_RATE( 160000000, 1, 80, 12),
|
|
||||||
+ RK3066_PLL_RATE( 157500000, 1, 105, 16),
|
|
||||||
RK3066_PLL_RATE( 126000000, 1, 84, 16),
|
|
||||||
RK3066_PLL_RATE( 48000000, 1, 64, 32),
|
|
||||||
{ /* sentinel */ },
|
|
||||||
@@ -194,10 +215,14 @@ PNAME(mux_ddrphy_p) = { "dpll_ddr", "gpll_ddr" };
|
|
||||||
PNAME(mux_aclk_cpu_src_p) = { "cpll_aclk_cpu", "gpll_aclk_cpu" };
|
|
||||||
|
|
||||||
PNAME(mux_pll_src_cpll_gpll_p) = { "cpll", "gpll" };
|
|
||||||
-PNAME(mux_pll_src_npll_cpll_gpll_p) = { "npll", "cpll", "gpll" };
|
|
||||||
-PNAME(mux_pll_src_cpll_gpll_npll_p) = { "cpll", "gpll", "npll" };
|
|
||||||
+PNAME_ED(mux_pll_src_npll_cpll_gpll_p) = { "npll", "cpll", "gpll" };
|
|
||||||
+
|
|
||||||
+PNAME_ED(mux_pll_src_cgn_pll_nonvop_p) = { "cpll", "gpll", "npll" };
|
|
||||||
+PNAME_ED(mux_pll_src_cgn_pll_vop0_p) = { "cpll", "gpll", "npll" };
|
|
||||||
+PNAME_ED(mux_pll_src_cgn_pll_vop1_p) = { "cpll", "gpll", "npll" };
|
|
||||||
+
|
|
||||||
PNAME(mux_pll_src_cpll_gpll_usb480m_p) = { "cpll", "gpll", "usbphy480m_src" };
|
|
||||||
-PNAME(mux_pll_src_cpll_gll_usb_npll_p) = { "cpll", "gpll", "usbphy480m_src", "npll" };
|
|
||||||
+PNAME_ED(mux_pll_src_cpll_gll_usb_npll_p) = { "cpll", "gpll", "usbphy480m_src", "npll" };
|
|
||||||
|
|
||||||
PNAME(mux_mmc_src_p) = { "cpll", "gpll", "xin24m", "xin24m" };
|
|
||||||
PNAME(mux_i2s_pre_p) = { "i2s_src", "i2s_frac", "ext_i2s", "xin12m" };
|
|
||||||
@@ -443,24 +468,24 @@ static struct rockchip_clk_branch rk3288_clk_branches[] __initdata = {
|
|
||||||
RK3288_CLKSEL_CON(30), 14, 2, MFLAGS, 8, 5, DFLAGS,
|
|
||||||
RK3288_CLKGATE_CON(3), 4, GFLAGS),
|
|
||||||
|
|
||||||
- COMPOSITE(DCLK_VOP0, "dclk_vop0", mux_pll_src_cpll_gpll_npll_p, 0,
|
|
||||||
+ COMPOSITE(DCLK_VOP0, "dclk_vop0", mux_pll_src_cgn_pll_vop0_p, 0,
|
|
||||||
RK3288_CLKSEL_CON(27), 0, 2, MFLAGS, 8, 8, DFLAGS,
|
|
||||||
RK3288_CLKGATE_CON(3), 1, GFLAGS),
|
|
||||||
- COMPOSITE(DCLK_VOP1, "dclk_vop1", mux_pll_src_cpll_gpll_npll_p, 0,
|
|
||||||
+ COMPOSITE(DCLK_VOP1, "dclk_vop1", mux_pll_src_cgn_pll_vop1_p, 0,
|
|
||||||
RK3288_CLKSEL_CON(29), 6, 2, MFLAGS, 8, 8, DFLAGS,
|
|
||||||
RK3288_CLKGATE_CON(3), 3, GFLAGS),
|
|
||||||
|
|
||||||
COMPOSITE_NODIV(SCLK_EDP_24M, "sclk_edp_24m", mux_edp_24m_p, 0,
|
|
||||||
RK3288_CLKSEL_CON(28), 15, 1, MFLAGS,
|
|
||||||
RK3288_CLKGATE_CON(3), 12, GFLAGS),
|
|
||||||
- COMPOSITE(SCLK_EDP, "sclk_edp", mux_pll_src_cpll_gpll_npll_p, 0,
|
|
||||||
+ COMPOSITE(SCLK_EDP, "sclk_edp", mux_pll_src_cgn_pll_nonvop_p, 0,
|
|
||||||
RK3288_CLKSEL_CON(28), 6, 2, MFLAGS, 0, 6, DFLAGS,
|
|
||||||
RK3288_CLKGATE_CON(3), 13, GFLAGS),
|
|
||||||
|
|
||||||
- COMPOSITE(SCLK_ISP, "sclk_isp", mux_pll_src_cpll_gpll_npll_p, 0,
|
|
||||||
+ COMPOSITE(SCLK_ISP, "sclk_isp", mux_pll_src_cgn_pll_nonvop_p, 0,
|
|
||||||
RK3288_CLKSEL_CON(6), 6, 2, MFLAGS, 0, 6, DFLAGS,
|
|
||||||
RK3288_CLKGATE_CON(3), 14, GFLAGS),
|
|
||||||
- COMPOSITE(SCLK_ISP_JPE, "sclk_isp_jpe", mux_pll_src_cpll_gpll_npll_p, 0,
|
|
||||||
+ COMPOSITE(SCLK_ISP_JPE, "sclk_isp_jpe", mux_pll_src_cgn_pll_nonvop_p, 0,
|
|
||||||
RK3288_CLKSEL_CON(6), 14, 2, MFLAGS, 8, 6, DFLAGS,
|
|
||||||
RK3288_CLKGATE_CON(3), 15, GFLAGS),
|
|
||||||
|
|
||||||
@@ -469,16 +494,16 @@ static struct rockchip_clk_branch rk3288_clk_branches[] __initdata = {
|
|
||||||
GATE(SCLK_HDMI_CEC, "sclk_hdmi_cec", "xin32k", 0,
|
|
||||||
RK3288_CLKGATE_CON(5), 11, GFLAGS),
|
|
||||||
|
|
||||||
- COMPOSITE(ACLK_HEVC, "aclk_hevc", mux_pll_src_cpll_gpll_npll_p, 0,
|
|
||||||
+ COMPOSITE(ACLK_HEVC, "aclk_hevc", mux_pll_src_cgn_pll_nonvop_p, 0,
|
|
||||||
RK3288_CLKSEL_CON(39), 14, 2, MFLAGS, 8, 5, DFLAGS,
|
|
||||||
RK3288_CLKGATE_CON(13), 13, GFLAGS),
|
|
||||||
DIV(HCLK_HEVC, "hclk_hevc", "aclk_hevc", 0,
|
|
||||||
RK3288_CLKSEL_CON(40), 12, 2, DFLAGS),
|
|
||||||
|
|
||||||
- COMPOSITE(SCLK_HEVC_CABAC, "sclk_hevc_cabac", mux_pll_src_cpll_gpll_npll_p, 0,
|
|
||||||
+ COMPOSITE(SCLK_HEVC_CABAC, "sclk_hevc_cabac", mux_pll_src_cgn_pll_nonvop_p, 0,
|
|
||||||
RK3288_CLKSEL_CON(42), 6, 2, MFLAGS, 0, 5, DFLAGS,
|
|
||||||
RK3288_CLKGATE_CON(13), 14, GFLAGS),
|
|
||||||
- COMPOSITE(SCLK_HEVC_CORE, "sclk_hevc_core", mux_pll_src_cpll_gpll_npll_p, 0,
|
|
||||||
+ COMPOSITE(SCLK_HEVC_CORE, "sclk_hevc_core", mux_pll_src_cgn_pll_nonvop_p, 0,
|
|
||||||
RK3288_CLKSEL_CON(42), 14, 2, MFLAGS, 8, 5, DFLAGS,
|
|
||||||
RK3288_CLKGATE_CON(13), 15, GFLAGS),
|
|
||||||
|
|
||||||
@@ -552,7 +577,7 @@ static struct rockchip_clk_branch rk3288_clk_branches[] __initdata = {
|
|
||||||
COMPOSITE(0, "sclk_tspout", mux_tspout_p, 0,
|
|
||||||
RK3288_CLKSEL_CON(35), 14, 2, MFLAGS, 8, 5, DFLAGS,
|
|
||||||
RK3288_CLKGATE_CON(4), 11, GFLAGS),
|
|
||||||
- COMPOSITE(0, "sclk_tsp", mux_pll_src_cpll_gpll_npll_p, 0,
|
|
||||||
+ COMPOSITE(0, "sclk_tsp", mux_pll_src_cgn_pll_nonvop_p, 0,
|
|
||||||
RK3288_CLKSEL_CON(35), 6, 2, MFLAGS, 0, 5, DFLAGS,
|
|
||||||
RK3288_CLKGATE_CON(4), 10, GFLAGS),
|
|
||||||
|
|
||||||
@@ -912,6 +937,7 @@ static void __init rk3288_clk_init(struct device_node *np)
|
|
||||||
{
|
|
||||||
struct rockchip_clk_provider *ctx;
|
|
||||||
struct clk *clk;
|
|
||||||
+ s32 npll_vop = -1;
|
|
||||||
|
|
||||||
rk3288_cru_base = of_iomap(np, 0);
|
|
||||||
if (!rk3288_cru_base) {
|
|
||||||
@@ -919,6 +945,46 @@ static void __init rk3288_clk_init(struct device_node *np)
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ if (!of_property_read_s32(np, "rockchip,npll-for-vop", &npll_vop)) {
|
|
||||||
+ if ((npll_vop < -1) || (npll_vop > 1)) {
|
|
||||||
+ pr_warn("%s: invalid VOP to dedicate NPLL to: %d\n",
|
|
||||||
+ __func__, npll_vop);
|
|
||||||
+ } else if (npll_vop >= 0) {
|
|
||||||
+ unsigned int vop_clk_id;
|
|
||||||
+ const char ** npll_names;
|
|
||||||
+ const char ** non_npll_names;
|
|
||||||
+ int i;
|
|
||||||
+
|
|
||||||
+ /* Firstly, not-VOP needs to not use npll */
|
|
||||||
+ mux_pll_src_npll_cpll_gpll_p[0] = "dummy_npll";
|
|
||||||
+ mux_pll_src_cgn_pll_nonvop_p[2] = "dummy_npll";
|
|
||||||
+ mux_pll_src_cpll_gll_usb_npll_p[3] = "dummy_npll";
|
|
||||||
+
|
|
||||||
+ /* Then the npll VOP needs to only use npll, and the other one not use npll. */
|
|
||||||
+ if (npll_vop) {
|
|
||||||
+ vop_clk_id = DCLK_VOP1;
|
|
||||||
+ npll_names = mux_pll_src_cgn_pll_vop1_p;
|
|
||||||
+ non_npll_names = mux_pll_src_cgn_pll_vop0_p;
|
|
||||||
+ } else {
|
|
||||||
+ vop_clk_id = DCLK_VOP0;
|
|
||||||
+ npll_names = mux_pll_src_cgn_pll_vop0_p;
|
|
||||||
+ non_npll_names = mux_pll_src_cgn_pll_vop1_p;
|
|
||||||
+ }
|
|
||||||
+ npll_names[0] = "dummy_cpll";
|
|
||||||
+ npll_names[1] = "dummy_gpll";
|
|
||||||
+ non_npll_names[2] = "dummy_npll";
|
|
||||||
+
|
|
||||||
+ /* Lastly the npll-dedicated-VOP needs to be able to control npll. */
|
|
||||||
+ for (i = 0; i < ARRAY_SIZE(rk3288_clk_branches); i++) {
|
|
||||||
+ if (rk3288_clk_branches[i].id == vop_clk_id) {
|
|
||||||
+ rk3288_clk_branches[i].flags |= CLK_SET_RATE_PARENT;
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ pr_debug("%s: npll dedicated for VOP %d\n", __func__, npll_vop);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
ctx = rockchip_clk_init(np, rk3288_cru_base, CLK_NR_CLKS);
|
|
||||||
if (IS_ERR(ctx)) {
|
|
||||||
pr_err("%s: rockchip clk init failed\n", __func__);
|
|
||||||
diff --git a/drivers/clk/rockchip/clk.h b/drivers/clk/rockchip/clk.h
|
|
||||||
index 6b53fff4c..dbda9d281 100644
|
|
||||||
--- a/drivers/clk/rockchip/clk.h
|
|
||||||
+++ b/drivers/clk/rockchip/clk.h
|
|
||||||
@@ -382,6 +382,9 @@ struct clk *rockchip_clk_register_muxgrf(const char *name,
|
|
||||||
|
|
||||||
#define PNAME(x) static const char *const x[] __initconst
|
|
||||||
|
|
||||||
+/* For when you want to be able to modify the pointers. */
|
|
||||||
+#define PNAME_ED(x) static const char * x[] __initdata
|
|
||||||
+
|
|
||||||
enum rockchip_clk_branch_type {
|
|
||||||
branch_composite,
|
|
||||||
branch_mux,
|
|
||||||
--
|
|
||||||
2.16.4
|
|
||||||
|
|
@@ -1,424 +0,0 @@
|
|||||||
From 6c86916e81fa18394d9b57b4af44f9948e100e96 Mon Sep 17 00:00:00 2001
|
|
||||||
From: "Miouyouyou (Myy)" <myy@miouyouyou.fr>
|
|
||||||
Date: Sat, 29 Sep 2018 03:02:10 +0200
|
|
||||||
Subject: [PATCH 6/6] drm: dw_hdmi-rockchip: better clock selection logic and
|
|
||||||
dts-based rate list
|
|
||||||
|
|
||||||
This patch is taken from Urja Rannikko ( @urjaman ) patchset here :
|
|
||||||
https://github.com/urjaman/arch-c201/blob/master/linux-c201/0020-RK3288-HDMI-clock-hacks-combined.patch
|
|
||||||
https://www.spinics.net/lists/arm-kernel/msg673156.html
|
|
||||||
|
|
||||||
The original description was :
|
|
||||||
This contains traces of the following commits from the ChromeOS 3.14
|
|
||||||
tree, which improve RF/EMI performance and detach the clock selection
|
|
||||||
logic from the HDMI PHY configurations, plus support for configuring
|
|
||||||
the allowed clock rates via device tree as they are dependent on
|
|
||||||
PLL configuration and maybe even the PCB layout and other hardware things,
|
|
||||||
eg. interference to wifi or such (EMI).
|
|
||||||
|
|
||||||
Rates that were allowed previous to this patch are added as the fallback
|
|
||||||
list if no dts configuration exists.
|
|
||||||
|
|
||||||
CHROMIUM: drm: rockchip/dw_hdmi-rockchip: Adjust rockchip_mpll_cfg for 146.25
|
|
||||||
CHROMIUM: drm: rockchip/dw_hdmi-rockchip: expand the informal mpll config
|
|
||||||
CHROMIUM: drm: rockchip/dw_hdmi-rockchip: add slop to more tables
|
|
||||||
CHROMIUM: drm: rockchip/dw_hdmi-rockchip: redo rockchip hdmi to allow slop
|
|
||||||
CHROMIUM: drm: rockchip/dw_hdmi-rockchip: Use auto-generated tables
|
|
||||||
CHROMIUM: drm: rockchip/dw_hdmi-rockchip: Fixup the clock to be what we expect
|
|
||||||
CHROMIUM: drm/rockchip: hdmi: adjust cklvl & txlvl for RF/EMI
|
|
||||||
CHROMIUM: drm: rockchip/dw_hdmi-rockchip: Set cur_ctr to 0 always
|
|
||||||
CHROMIUM: drm: rockchip/dw_hdmi-rockchip: Decrease slop
|
|
||||||
|
|
||||||
https://www.spinics.net/lists/arm-kernel/msg673163.html
|
|
||||||
|
|
||||||
This is the patch that takes into account the new property
|
|
||||||
"rockchip,hdmi-rates-hz" that allows the definition of the HDMI
|
|
||||||
frequencies in the DTS file.
|
|
||||||
This also change a lot of HDMI frequencies definition, so that
|
|
||||||
*will* require some extensive testing.
|
|
||||||
|
|
||||||
Still, if it works fine, this should make tinkering the HDMI
|
|
||||||
frequencies easier, in case you have a very special HDMI screen.
|
|
||||||
|
|
||||||
Signed-off-by: Miouyouyou (Myy) <myy@miouyouyou.fr>
|
|
||||||
---
|
|
||||||
drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c | 269 ++++++++++++++++++----------
|
|
||||||
1 file changed, 175 insertions(+), 94 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
|
||||||
index 11309a2a4..740b0aeea 100644
|
|
||||||
--- a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
|
||||||
+++ b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
|
|
||||||
@@ -49,122 +49,141 @@ struct rockchip_hdmi {
|
|
||||||
struct clk *vpll_clk;
|
|
||||||
struct clk *grf_clk;
|
|
||||||
struct dw_hdmi *hdmi;
|
|
||||||
+ u32* rates;
|
|
||||||
+ u32 rates_cnt;
|
|
||||||
};
|
|
||||||
|
|
||||||
+#define CLK_SLOP(clk) ((clk) / 1000)
|
|
||||||
+#define CLK_PLUS_SLOP(clk) ((clk) + CLK_SLOP(clk))
|
|
||||||
+
|
|
||||||
#define to_rockchip_hdmi(x) container_of(x, struct rockchip_hdmi, x)
|
|
||||||
|
|
||||||
+/* These were the rates allowed by the driver before rates list in device tree,
|
|
||||||
+ * so keep them around as a fallback */
|
|
||||||
+static const u32 dw_hdmi_fallback_rates[] = {
|
|
||||||
+ 27000000,
|
|
||||||
+ 36000000,
|
|
||||||
+ 40000000,
|
|
||||||
+ 54000000,
|
|
||||||
+ 65000000,
|
|
||||||
+ 66000000,
|
|
||||||
+ 74250000,
|
|
||||||
+ 83500000,
|
|
||||||
+ 106500000,
|
|
||||||
+ 108000000,
|
|
||||||
+ 146250000,
|
|
||||||
+ 148500000
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
static const struct dw_hdmi_mpll_config rockchip_mpll_cfg[] = {
|
|
||||||
{
|
|
||||||
- 27000000, {
|
|
||||||
- { 0x00b3, 0x0000},
|
|
||||||
- { 0x2153, 0x0000},
|
|
||||||
- { 0x40f3, 0x0000}
|
|
||||||
+ 30666000, {
|
|
||||||
+ { 0x00b3, 0x0000 },
|
|
||||||
+ { 0x2153, 0x0000 },
|
|
||||||
+ { 0x40f3, 0x0000 },
|
|
||||||
+ },
|
|
||||||
+ }, {
|
|
||||||
+ 36800000, {
|
|
||||||
+ { 0x00b3, 0x0000 },
|
|
||||||
+ { 0x2153, 0x0000 },
|
|
||||||
+ { 0x40a2, 0x0001 },
|
|
||||||
},
|
|
||||||
- }, {
|
|
||||||
- 36000000, {
|
|
||||||
- { 0x00b3, 0x0000},
|
|
||||||
- { 0x2153, 0x0000},
|
|
||||||
- { 0x40f3, 0x0000}
|
|
||||||
+ }, {
|
|
||||||
+ 46000000, {
|
|
||||||
+ { 0x00b3, 0x0000 },
|
|
||||||
+ { 0x2142, 0x0001 },
|
|
||||||
+ { 0x40a2, 0x0001 },
|
|
||||||
},
|
|
||||||
- }, {
|
|
||||||
- 40000000, {
|
|
||||||
- { 0x00b3, 0x0000},
|
|
||||||
- { 0x2153, 0x0000},
|
|
||||||
- { 0x40f3, 0x0000}
|
|
||||||
+ }, {
|
|
||||||
+ 61333000, {
|
|
||||||
+ { 0x0072, 0x0001 },
|
|
||||||
+ { 0x2142, 0x0001 },
|
|
||||||
+ { 0x40a2, 0x0001 },
|
|
||||||
},
|
|
||||||
- }, {
|
|
||||||
- 54000000, {
|
|
||||||
- { 0x0072, 0x0001},
|
|
||||||
- { 0x2142, 0x0001},
|
|
||||||
- { 0x40a2, 0x0001},
|
|
||||||
+ }, {
|
|
||||||
+ 73600000, {
|
|
||||||
+ { 0x0072, 0x0001 },
|
|
||||||
+ { 0x2142, 0x0001 },
|
|
||||||
+ { 0x4061, 0x0002 },
|
|
||||||
},
|
|
||||||
- }, {
|
|
||||||
- 65000000, {
|
|
||||||
- { 0x0072, 0x0001},
|
|
||||||
- { 0x2142, 0x0001},
|
|
||||||
- { 0x40a2, 0x0001},
|
|
||||||
+ }, {
|
|
||||||
+ 92000000, {
|
|
||||||
+ { 0x0072, 0x0001 },
|
|
||||||
+ { 0x2145, 0x0002 },
|
|
||||||
+ { 0x4061, 0x0002 },
|
|
||||||
},
|
|
||||||
- }, {
|
|
||||||
- 66000000, {
|
|
||||||
- { 0x013e, 0x0003},
|
|
||||||
- { 0x217e, 0x0002},
|
|
||||||
- { 0x4061, 0x0002}
|
|
||||||
+ }, {
|
|
||||||
+ 122666000, {
|
|
||||||
+ { 0x0051, 0x0002 },
|
|
||||||
+ { 0x2145, 0x0002 },
|
|
||||||
+ { 0x4061, 0x0002 },
|
|
||||||
},
|
|
||||||
- }, {
|
|
||||||
- 74250000, {
|
|
||||||
- { 0x0072, 0x0001},
|
|
||||||
- { 0x2145, 0x0002},
|
|
||||||
- { 0x4061, 0x0002}
|
|
||||||
+ }, {
|
|
||||||
+ 147200000, {
|
|
||||||
+ { 0x0051, 0x0002 },
|
|
||||||
+ { 0x2145, 0x0002 },
|
|
||||||
+ { 0x4064, 0x0003 },
|
|
||||||
},
|
|
||||||
- }, {
|
|
||||||
- 83500000, {
|
|
||||||
- { 0x0072, 0x0001},
|
|
||||||
+ }, {
|
|
||||||
+ 184000000, {
|
|
||||||
+ { 0x0051, 0x0002 },
|
|
||||||
+ { 0x214c, 0x0003 },
|
|
||||||
+ { 0x4064, 0x0003 },
|
|
||||||
},
|
|
||||||
- }, {
|
|
||||||
- 108000000, {
|
|
||||||
- { 0x0051, 0x0002},
|
|
||||||
- { 0x2145, 0x0002},
|
|
||||||
- { 0x4061, 0x0002}
|
|
||||||
+ }, {
|
|
||||||
+ 226666000, {
|
|
||||||
+ { 0x0040, 0x0003 },
|
|
||||||
+ { 0x214c, 0x0003 },
|
|
||||||
+ { 0x4064, 0x0003 },
|
|
||||||
},
|
|
||||||
- }, {
|
|
||||||
- 106500000, {
|
|
||||||
- { 0x0051, 0x0002},
|
|
||||||
- { 0x2145, 0x0002},
|
|
||||||
- { 0x4061, 0x0002}
|
|
||||||
+ }, {
|
|
||||||
+ 272000000, {
|
|
||||||
+ { 0x0040, 0x0003 },
|
|
||||||
+ { 0x214c, 0x0003 },
|
|
||||||
+ { 0x5a64, 0x0003 },
|
|
||||||
},
|
|
||||||
- }, {
|
|
||||||
- 146250000, {
|
|
||||||
- { 0x0051, 0x0002},
|
|
||||||
- { 0x2145, 0x0002},
|
|
||||||
- { 0x4061, 0x0002}
|
|
||||||
+ }, {
|
|
||||||
+ 340000000, {
|
|
||||||
+ { 0x0040, 0x0003 },
|
|
||||||
+ { 0x3b4c, 0x0003 },
|
|
||||||
+ { 0x5a64, 0x0003 },
|
|
||||||
},
|
|
||||||
- }, {
|
|
||||||
- 148500000, {
|
|
||||||
- { 0x0051, 0x0003},
|
|
||||||
- { 0x214c, 0x0003},
|
|
||||||
- { 0x4064, 0x0003}
|
|
||||||
+ }, {
|
|
||||||
+ 600000000, {
|
|
||||||
+ { 0x1a40, 0x0003 },
|
|
||||||
+ { 0x3b4c, 0x0003 },
|
|
||||||
+ { 0x5a64, 0x0003 },
|
|
||||||
},
|
|
||||||
- }, {
|
|
||||||
+ }, {
|
|
||||||
~0UL, {
|
|
||||||
- { 0x00a0, 0x000a },
|
|
||||||
- { 0x2001, 0x000f },
|
|
||||||
- { 0x4002, 0x000f },
|
|
||||||
+ { 0x0000, 0x0000 },
|
|
||||||
+ { 0x0000, 0x0000 },
|
|
||||||
+ { 0x0000, 0x0000 },
|
|
||||||
},
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
static const struct dw_hdmi_curr_ctrl rockchip_cur_ctr[] = {
|
|
||||||
- /* pixelclk bpp8 bpp10 bpp12 */
|
|
||||||
+ /* pixelclk bpp8 bpp10 bpp12 */
|
|
||||||
{
|
|
||||||
- 40000000, { 0x0018, 0x0018, 0x0018 },
|
|
||||||
- }, {
|
|
||||||
- 65000000, { 0x0028, 0x0028, 0x0028 },
|
|
||||||
- }, {
|
|
||||||
- 66000000, { 0x0038, 0x0038, 0x0038 },
|
|
||||||
- }, {
|
|
||||||
- 74250000, { 0x0028, 0x0038, 0x0038 },
|
|
||||||
- }, {
|
|
||||||
- 83500000, { 0x0028, 0x0038, 0x0038 },
|
|
||||||
- }, {
|
|
||||||
- 146250000, { 0x0038, 0x0038, 0x0038 },
|
|
||||||
- }, {
|
|
||||||
- 148500000, { 0x0000, 0x0038, 0x0038 },
|
|
||||||
- }, {
|
|
||||||
- ~0UL, { 0x0000, 0x0000, 0x0000},
|
|
||||||
- }
|
|
||||||
+ 600000000, { 0x0000, 0x0000, 0x0000 },
|
|
||||||
+ }, {
|
|
||||||
+ ~0UL, { 0x0000, 0x0000, 0x0000 },
|
|
||||||
+ },
|
|
||||||
};
|
|
||||||
|
|
||||||
static const struct dw_hdmi_phy_config rockchip_phy_config[] = {
|
|
||||||
/*pixelclk symbol term vlev*/
|
|
||||||
- { 74250000, 0x8009, 0x0004, 0x0272},
|
|
||||||
- { 148500000, 0x802b, 0x0004, 0x028d},
|
|
||||||
- { 297000000, 0x8039, 0x0005, 0x028d},
|
|
||||||
- { ~0UL, 0x0000, 0x0000, 0x0000}
|
|
||||||
+ { CLK_PLUS_SLOP(74250000), 0x8009, 0x0004, 0x0272},
|
|
||||||
+ { CLK_PLUS_SLOP(165000000), 0x802b, 0x0004, 0x0209},
|
|
||||||
+ { CLK_PLUS_SLOP(297000000), 0x8039, 0x0005, 0x028d},
|
|
||||||
+ { ~0UL, 0x0000, 0x0000, 0x0000}
|
|
||||||
};
|
|
||||||
|
|
||||||
static int rockchip_hdmi_parse_dt(struct rockchip_hdmi *hdmi)
|
|
||||||
{
|
|
||||||
struct device_node *np = hdmi->dev->of_node;
|
|
||||||
+ int rates_cnt;
|
|
||||||
|
|
||||||
hdmi->regmap = syscon_regmap_lookup_by_phandle(np, "rockchip,grf");
|
|
||||||
if (IS_ERR(hdmi->regmap)) {
|
|
||||||
@@ -192,26 +211,55 @@ static int rockchip_hdmi_parse_dt(struct rockchip_hdmi *hdmi)
|
|
||||||
return PTR_ERR(hdmi->grf_clk);
|
|
||||||
}
|
|
||||||
|
|
||||||
+ if ((rates_cnt = of_property_count_u32_elems(np, "rockchip,hdmi-rates-hz")) > 0) {
|
|
||||||
+ int rv;
|
|
||||||
+ u32 *rates = devm_kmalloc_array(hdmi->dev, rates_cnt, sizeof(u32), GFP_KERNEL);
|
|
||||||
+ if (!rates)
|
|
||||||
+ return -ENOMEM;
|
|
||||||
+ rv = of_property_read_u32_array(np, "rockchip,hdmi-rates-hz", rates, rates_cnt);
|
|
||||||
+ if (rv)
|
|
||||||
+ return rv;
|
|
||||||
+ hdmi->rates = rates;
|
|
||||||
+ hdmi->rates_cnt = rates_cnt;
|
|
||||||
+ } else {
|
|
||||||
+ rates_cnt = ARRAY_SIZE(dw_hdmi_fallback_rates);
|
|
||||||
+ hdmi->rates = devm_kmalloc_array(hdmi->dev, rates_cnt, sizeof(u32), GFP_KERNEL);
|
|
||||||
+ if (!hdmi->rates)
|
|
||||||
+ return -ENOMEM;
|
|
||||||
+ memcpy(hdmi->rates, dw_hdmi_fallback_rates, rates_cnt * sizeof(u32));
|
|
||||||
+ hdmi->rates_cnt = rates_cnt;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static enum drm_mode_status
|
|
||||||
-dw_hdmi_rockchip_mode_valid(struct drm_connector *connector,
|
|
||||||
+dw_hdmi_rockchip_encoder_mode_valid(struct drm_encoder *encoder,
|
|
||||||
const struct drm_display_mode *mode)
|
|
||||||
{
|
|
||||||
- const struct dw_hdmi_mpll_config *mpll_cfg = rockchip_mpll_cfg;
|
|
||||||
+ struct rockchip_hdmi *hdmi = to_rockchip_hdmi(encoder);
|
|
||||||
int pclk = mode->clock * 1000;
|
|
||||||
- bool valid = false;
|
|
||||||
+ int num_rates = hdmi->rates_cnt;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
- for (i = 0; mpll_cfg[i].mpixelclock != (~0UL); i++) {
|
|
||||||
- if (pclk == mpll_cfg[i].mpixelclock) {
|
|
||||||
- valid = true;
|
|
||||||
- break;
|
|
||||||
- }
|
|
||||||
+ /*
|
|
||||||
+ * Pixel clocks we support are always < 2GHz and so fit in an
|
|
||||||
+ * int. We should make sure source rate does too so we don't get
|
|
||||||
+ * overflow when we multiply by 1000.
|
|
||||||
+ */
|
|
||||||
+ if (mode->clock > INT_MAX / 1000)
|
|
||||||
+ return MODE_BAD;
|
|
||||||
+
|
|
||||||
+ for (i = 0; i < num_rates; i++) {
|
|
||||||
+ int slop = CLK_SLOP(pclk);
|
|
||||||
+
|
|
||||||
+ if ((pclk >= hdmi->rates[i] - slop) &&
|
|
||||||
+ (pclk <= hdmi->rates[i] + slop))
|
|
||||||
+ return MODE_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
- return (valid) ? MODE_OK : MODE_BAD;
|
|
||||||
+ return MODE_BAD;
|
|
||||||
}
|
|
||||||
|
|
||||||
static const struct drm_encoder_funcs dw_hdmi_rockchip_encoder_funcs = {
|
|
||||||
@@ -227,7 +275,39 @@ dw_hdmi_rockchip_encoder_mode_fixup(struct drm_encoder *encoder,
|
|
||||||
const struct drm_display_mode *mode,
|
|
||||||
struct drm_display_mode *adj_mode)
|
|
||||||
{
|
|
||||||
- return true;
|
|
||||||
+ struct rockchip_hdmi *hdmi = to_rockchip_hdmi(encoder);
|
|
||||||
+ int pclk = adj_mode->clock * 1000;
|
|
||||||
+ int best_diff = INT_MAX;
|
|
||||||
+ int best_clock = 0;
|
|
||||||
+ int slop;
|
|
||||||
+ int i;
|
|
||||||
+
|
|
||||||
+ /* Pick the best clock */
|
|
||||||
+ for (i = 0; i < hdmi->rates_cnt; i++) {
|
|
||||||
+ int diff = hdmi->rates[i] - pclk;
|
|
||||||
+
|
|
||||||
+ if (diff < 0)
|
|
||||||
+ diff = -diff;
|
|
||||||
+ if (diff < best_diff) {
|
|
||||||
+ best_diff = diff;
|
|
||||||
+ best_clock = hdmi->rates[i];
|
|
||||||
+
|
|
||||||
+ /* Bail early if we're exact */
|
|
||||||
+ if (best_diff == 0)
|
|
||||||
+ return true;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /* Double check that it's OK */
|
|
||||||
+ slop = CLK_SLOP(pclk);
|
|
||||||
+ if ((pclk >= best_clock - slop) && (pclk <= best_clock + slop)) {
|
|
||||||
+ adj_mode->clock = DIV_ROUND_UP(best_clock, 1000);
|
|
||||||
+ return true;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /* Shoudn't be here; we should have said rate wasn't valid */
|
|
||||||
+ dev_warn(hdmi->dev, "tried to set invalid rate %d\n", adj_mode->clock);
|
|
||||||
+ return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void dw_hdmi_rockchip_encoder_mode_set(struct drm_encoder *encoder,
|
|
||||||
@@ -280,6 +360,7 @@ dw_hdmi_rockchip_encoder_atomic_check(struct drm_encoder *encoder,
|
|
||||||
}
|
|
||||||
|
|
||||||
static const struct drm_encoder_helper_funcs dw_hdmi_rockchip_encoder_helper_funcs = {
|
|
||||||
+ .mode_valid = dw_hdmi_rockchip_encoder_mode_valid,
|
|
||||||
.mode_fixup = dw_hdmi_rockchip_encoder_mode_fixup,
|
|
||||||
.mode_set = dw_hdmi_rockchip_encoder_mode_set,
|
|
||||||
.enable = dw_hdmi_rockchip_encoder_enable,
|
|
||||||
@@ -294,7 +375,6 @@ static struct rockchip_hdmi_chip_data rk3288_chip_data = {
|
|
||||||
};
|
|
||||||
|
|
||||||
static const struct dw_hdmi_plat_data rk3288_hdmi_drv_data = {
|
|
||||||
- .mode_valid = dw_hdmi_rockchip_mode_valid,
|
|
||||||
.mpll_cfg = rockchip_mpll_cfg,
|
|
||||||
.cur_ctr = rockchip_cur_ctr,
|
|
||||||
.phy_config = rockchip_phy_config,
|
|
||||||
@@ -308,7 +388,6 @@ static struct rockchip_hdmi_chip_data rk3399_chip_data = {
|
|
||||||
};
|
|
||||||
|
|
||||||
static const struct dw_hdmi_plat_data rk3399_hdmi_drv_data = {
|
|
||||||
- .mode_valid = dw_hdmi_rockchip_mode_valid,
|
|
||||||
.mpll_cfg = rockchip_mpll_cfg,
|
|
||||||
.cur_ctr = rockchip_cur_ctr,
|
|
||||||
.phy_config = rockchip_phy_config,
|
|
||||||
@@ -387,6 +466,7 @@ static int dw_hdmi_rockchip_bind(struct device *dev, struct device *master,
|
|
||||||
*/
|
|
||||||
if (IS_ERR(hdmi->hdmi)) {
|
|
||||||
ret = PTR_ERR(hdmi->hdmi);
|
|
||||||
+ devm_kfree(hdmi->dev, hdmi->rates);
|
|
||||||
drm_encoder_cleanup(encoder);
|
|
||||||
clk_disable_unprepare(hdmi->vpll_clk);
|
|
||||||
}
|
|
||||||
@@ -399,6 +479,7 @@ static void dw_hdmi_rockchip_unbind(struct device *dev, struct device *master,
|
|
||||||
{
|
|
||||||
struct rockchip_hdmi *hdmi = dev_get_drvdata(dev);
|
|
||||||
|
|
||||||
+ devm_kfree(hdmi->dev, hdmi->rates);
|
|
||||||
dw_hdmi_unbind(hdmi->hdmi);
|
|
||||||
clk_disable_unprepare(hdmi->vpll_clk);
|
|
||||||
}
|
|
||||||
--
|
|
||||||
2.16.4
|
|
||||||
|
|
@@ -1,63 +0,0 @@
|
|||||||
From 1680a655127a62e74cbcfb84782e04a9c55dcf81 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Shunqian Zheng <zhengsq@rock-chips.com>
|
|
||||||
Date: Wed, 5 Sep 2018 19:00:09 -0300
|
|
||||||
Subject: [PATCH 3/6] media: Add JPEG_RAW format
|
|
||||||
|
|
||||||
Add V4L2_PIX_FMT_JPEG_RAW format that does not contain
|
|
||||||
JPEG header in the output frame.
|
|
||||||
|
|
||||||
Signed-off-by: Shunqian Zheng <zhengsq@rock-chips.com>
|
|
||||||
Signed-off-by: Ezequiel Garcia <ezequiel@collabora.com>
|
|
||||||
---
|
|
||||||
Documentation/media/uapi/v4l/pixfmt-compressed.rst | 9 +++++++++
|
|
||||||
drivers/media/v4l2-core/v4l2-ioctl.c | 1 +
|
|
||||||
include/uapi/linux/videodev2.h | 1 +
|
|
||||||
3 files changed, 11 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/Documentation/media/uapi/v4l/pixfmt-compressed.rst b/Documentation/media/uapi/v4l/pixfmt-compressed.rst
|
|
||||||
index d382e7a5..4dffe400 100644
|
|
||||||
--- a/Documentation/media/uapi/v4l/pixfmt-compressed.rst
|
|
||||||
+++ b/Documentation/media/uapi/v4l/pixfmt-compressed.rst
|
|
||||||
@@ -23,6 +23,15 @@ Compressed Formats
|
|
||||||
- 'JPEG'
|
|
||||||
- TBD. See also :ref:`VIDIOC_G_JPEGCOMP <VIDIOC_G_JPEGCOMP>`,
|
|
||||||
:ref:`VIDIOC_S_JPEGCOMP <VIDIOC_G_JPEGCOMP>`.
|
|
||||||
+ * .. _V4L2-PIX-FMT-JPEG-RAW:
|
|
||||||
+
|
|
||||||
+ - ``V4L2_PIX_FMT_JPEG_RAW``
|
|
||||||
+ - 'Raw JPEG'
|
|
||||||
+ - Raw JPEG bitstream, containing a compressed payload. This format
|
|
||||||
+ contains an image scan, i.e. without any metadata or headers.
|
|
||||||
+ The user is expected to set the needed metadata such as
|
|
||||||
+ quantization and entropy encoding tables, via ``V4L2_CID_JPEG``
|
|
||||||
+ controls, see :ref:`jpeg-control-id`.
|
|
||||||
* .. _V4L2-PIX-FMT-MPEG:
|
|
||||||
|
|
||||||
- ``V4L2_PIX_FMT_MPEG``
|
|
||||||
diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c
|
|
||||||
index 54afc9c7..0dcd95f4 100644
|
|
||||||
--- a/drivers/media/v4l2-core/v4l2-ioctl.c
|
|
||||||
+++ b/drivers/media/v4l2-core/v4l2-ioctl.c
|
|
||||||
@@ -1301,6 +1301,7 @@ static void v4l_fill_fmtdesc(struct v4l2_fmtdesc *fmt)
|
|
||||||
/* Max description length mask: descr = "0123456789012345678901234567890" */
|
|
||||||
case V4L2_PIX_FMT_MJPEG: descr = "Motion-JPEG"; break;
|
|
||||||
case V4L2_PIX_FMT_JPEG: descr = "JFIF JPEG"; break;
|
|
||||||
+ case V4L2_PIX_FMT_JPEG_RAW: descr = "Raw JPEG"; break;
|
|
||||||
case V4L2_PIX_FMT_DV: descr = "1394"; break;
|
|
||||||
case V4L2_PIX_FMT_MPEG: descr = "MPEG-1/2/4"; break;
|
|
||||||
case V4L2_PIX_FMT_H264: descr = "H.264"; break;
|
|
||||||
diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h
|
|
||||||
index 5d1a3685..f271048c 100644
|
|
||||||
--- a/include/uapi/linux/videodev2.h
|
|
||||||
+++ b/include/uapi/linux/videodev2.h
|
|
||||||
@@ -627,6 +627,7 @@ struct v4l2_pix_format {
|
|
||||||
/* compressed formats */
|
|
||||||
#define V4L2_PIX_FMT_MJPEG v4l2_fourcc('M', 'J', 'P', 'G') /* Motion-JPEG */
|
|
||||||
#define V4L2_PIX_FMT_JPEG v4l2_fourcc('J', 'P', 'E', 'G') /* JFIF JPEG */
|
|
||||||
+#define V4L2_PIX_FMT_JPEG_RAW v4l2_fourcc('J', 'P', 'G', 'R') /* JFIF JPEG RAW without headers */
|
|
||||||
#define V4L2_PIX_FMT_DV v4l2_fourcc('d', 'v', 's', 'd') /* 1394 */
|
|
||||||
#define V4L2_PIX_FMT_MPEG v4l2_fourcc('M', 'P', 'E', 'G') /* MPEG-1/2/4 Multiplexed */
|
|
||||||
#define V4L2_PIX_FMT_H264 v4l2_fourcc('H', '2', '6', '4') /* H264 with start codes */
|
|
||||||
--
|
|
||||||
2.16.4
|
|
||||||
|
|
@@ -1,153 +0,0 @@
|
|||||||
From 82da876c36ccc7791d5b20e7ee8b50379f7b19aa Mon Sep 17 00:00:00 2001
|
|
||||||
From: Shunqian Zheng <zhengsq@rock-chips.com>
|
|
||||||
Date: Wed, 5 Sep 2018 19:00:10 -0300
|
|
||||||
Subject: [PATCH 4/6] media: Add controls for JPEG quantization tables
|
|
||||||
|
|
||||||
Add V4L2_CID_JPEG_QUANTIZATION compound control to allow userspace
|
|
||||||
configure the JPEG quantization tables.
|
|
||||||
|
|
||||||
Signed-off-by: Shunqian Zheng <zhengsq@rock-chips.com>
|
|
||||||
Signed-off-by: Ezequiel Garcia <ezequiel@collabora.com>
|
|
||||||
---
|
|
||||||
Documentation/media/uapi/v4l/extended-controls.rst | 31 ++++++++++++++++++++++
|
|
||||||
Documentation/media/videodev2.h.rst.exceptions | 1 +
|
|
||||||
drivers/media/v4l2-core/v4l2-ctrls.c | 10 +++++++
|
|
||||||
include/uapi/linux/v4l2-controls.h | 12 +++++++++
|
|
||||||
include/uapi/linux/videodev2.h | 1 +
|
|
||||||
5 files changed, 55 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/Documentation/media/uapi/v4l/extended-controls.rst b/Documentation/media/uapi/v4l/extended-controls.rst
|
|
||||||
index 9f7312bf..1335d27d 100644
|
|
||||||
--- a/Documentation/media/uapi/v4l/extended-controls.rst
|
|
||||||
+++ b/Documentation/media/uapi/v4l/extended-controls.rst
|
|
||||||
@@ -3354,7 +3354,38 @@ JPEG Control IDs
|
|
||||||
Specify which JPEG markers are included in compressed stream. This
|
|
||||||
control is valid only for encoders.
|
|
||||||
|
|
||||||
+.. _jpeg-quant-tables-control:
|
|
||||||
|
|
||||||
+``V4L2_CID_JPEG_QUANTIZATION (struct)``
|
|
||||||
+ Specifies the luma and chroma quantization matrices for encoding
|
|
||||||
+ or decoding a V4L2_PIX_FMT_JPEG_RAW format buffer. The :ref:`itu-t81`
|
|
||||||
+ specification allows 8-bit quantization coefficients for
|
|
||||||
+ baseline profile images, and 8-bit or 16-bit for extended profile
|
|
||||||
+ images. Supporting or not 16-bit precision coefficients is driver-specific.
|
|
||||||
+ Coefficients must be set in JPEG zigzag scan order.
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+.. c:type:: struct v4l2_ctrl_jpeg_quantization
|
|
||||||
+
|
|
||||||
+.. cssclass:: longtable
|
|
||||||
+
|
|
||||||
+.. flat-table:: struct v4l2_ctrl_jpeg_quantization
|
|
||||||
+ :header-rows: 0
|
|
||||||
+ :stub-columns: 0
|
|
||||||
+ :widths: 1 1 2
|
|
||||||
+
|
|
||||||
+ * - __u8
|
|
||||||
+ - ``precision``
|
|
||||||
+ - Specifies the coefficient precision. User shall set 0
|
|
||||||
+ for 8-bit, and 1 for 16-bit.
|
|
||||||
+
|
|
||||||
+ * - __u16
|
|
||||||
+ - ``luma_quantization_matrix[64]``
|
|
||||||
+ - Sets the luma quantization table.
|
|
||||||
+
|
|
||||||
+ * - __u16
|
|
||||||
+ - ``chroma_quantization_matrix[64]``
|
|
||||||
+ - Sets the chroma quantization table.
|
|
||||||
|
|
||||||
.. flat-table::
|
|
||||||
:header-rows: 0
|
|
||||||
diff --git a/Documentation/media/videodev2.h.rst.exceptions b/Documentation/media/videodev2.h.rst.exceptions
|
|
||||||
index ca9f0edc..a0a38e92 100644
|
|
||||||
--- a/Documentation/media/videodev2.h.rst.exceptions
|
|
||||||
+++ b/Documentation/media/videodev2.h.rst.exceptions
|
|
||||||
@@ -129,6 +129,7 @@ replace symbol V4L2_CTRL_TYPE_STRING :c:type:`v4l2_ctrl_type`
|
|
||||||
replace symbol V4L2_CTRL_TYPE_U16 :c:type:`v4l2_ctrl_type`
|
|
||||||
replace symbol V4L2_CTRL_TYPE_U32 :c:type:`v4l2_ctrl_type`
|
|
||||||
replace symbol V4L2_CTRL_TYPE_U8 :c:type:`v4l2_ctrl_type`
|
|
||||||
+replace symbol V4L2_CTRL_TYPE_JPEG_QUANTIZATION :c:type:`v4l2_ctrl_type`
|
|
||||||
|
|
||||||
# V4L2 capability defines
|
|
||||||
replace define V4L2_CAP_VIDEO_CAPTURE device-capabilities
|
|
||||||
diff --git a/drivers/media/v4l2-core/v4l2-ctrls.c b/drivers/media/v4l2-core/v4l2-ctrls.c
|
|
||||||
index 599c1cbf..305bd7a9 100644
|
|
||||||
--- a/drivers/media/v4l2-core/v4l2-ctrls.c
|
|
||||||
+++ b/drivers/media/v4l2-core/v4l2-ctrls.c
|
|
||||||
@@ -999,6 +999,7 @@ const char *v4l2_ctrl_get_name(u32 id)
|
|
||||||
case V4L2_CID_JPEG_RESTART_INTERVAL: return "Restart Interval";
|
|
||||||
case V4L2_CID_JPEG_COMPRESSION_QUALITY: return "Compression Quality";
|
|
||||||
case V4L2_CID_JPEG_ACTIVE_MARKER: return "Active Markers";
|
|
||||||
+ case V4L2_CID_JPEG_QUANTIZATION: return "JPEG Quantization Tables";
|
|
||||||
|
|
||||||
/* Image source controls */
|
|
||||||
/* Keep the order of the 'case's the same as in v4l2-controls.h! */
|
|
||||||
@@ -1286,6 +1287,9 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum v4l2_ctrl_type *type,
|
|
||||||
case V4L2_CID_DETECT_MD_REGION_GRID:
|
|
||||||
*type = V4L2_CTRL_TYPE_U8;
|
|
||||||
break;
|
|
||||||
+ case V4L2_CID_JPEG_QUANTIZATION:
|
|
||||||
+ *type = V4L2_CTRL_TYPE_JPEG_QUANTIZATION;
|
|
||||||
+ break;
|
|
||||||
case V4L2_CID_DETECT_MD_THRESHOLD_GRID:
|
|
||||||
*type = V4L2_CTRL_TYPE_U16;
|
|
||||||
break;
|
|
||||||
@@ -1612,6 +1616,9 @@ static int std_validate(const struct v4l2_ctrl *ctrl, u32 idx,
|
|
||||||
return -ERANGE;
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
+ case V4L2_CTRL_TYPE_JPEG_QUANTIZATION:
|
|
||||||
+ return 0;
|
|
||||||
+
|
|
||||||
default:
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
@@ -2133,6 +2140,9 @@ static struct v4l2_ctrl *v4l2_ctrl_new(struct v4l2_ctrl_handler *hdl,
|
|
||||||
case V4L2_CTRL_TYPE_U32:
|
|
||||||
elem_size = sizeof(u32);
|
|
||||||
break;
|
|
||||||
+ case V4L2_CTRL_TYPE_JPEG_QUANTIZATION:
|
|
||||||
+ elem_size = sizeof(struct v4l2_ctrl_jpeg_quantization);
|
|
||||||
+ break;
|
|
||||||
default:
|
|
||||||
if (type < V4L2_CTRL_COMPOUND_TYPES)
|
|
||||||
elem_size = sizeof(s32);
|
|
||||||
diff --git a/include/uapi/linux/v4l2-controls.h b/include/uapi/linux/v4l2-controls.h
|
|
||||||
index e4ee10ee..856b3325 100644
|
|
||||||
--- a/include/uapi/linux/v4l2-controls.h
|
|
||||||
+++ b/include/uapi/linux/v4l2-controls.h
|
|
||||||
@@ -987,6 +987,18 @@ enum v4l2_jpeg_chroma_subsampling {
|
|
||||||
#define V4L2_JPEG_ACTIVE_MARKER_DQT (1 << 17)
|
|
||||||
#define V4L2_JPEG_ACTIVE_MARKER_DHT (1 << 18)
|
|
||||||
|
|
||||||
+#define V4L2_CID_JPEG_QUANTIZATION (V4L2_CID_JPEG_CLASS_BASE + 5)
|
|
||||||
+struct v4l2_ctrl_jpeg_quantization {
|
|
||||||
+ /* ITU-T.81 specifies two quantization coefficient precisions:
|
|
||||||
+ * 8-bit for baseline profile,
|
|
||||||
+ * 8-bit or 16-bit for extended profile.
|
|
||||||
+ *
|
|
||||||
+ * User shall set "precision" to 0 for 8-bit and 1 for 16-bit.
|
|
||||||
+ */
|
|
||||||
+ __u8 precision;
|
|
||||||
+ __u16 luma_quantization_matrix[64];
|
|
||||||
+ __u16 chroma_quantization_matrix[64];
|
|
||||||
+};
|
|
||||||
|
|
||||||
/* Image source controls */
|
|
||||||
#define V4L2_CID_IMAGE_SOURCE_CLASS_BASE (V4L2_CTRL_CLASS_IMAGE_SOURCE | 0x900)
|
|
||||||
diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h
|
|
||||||
index f271048c..e998d074 100644
|
|
||||||
--- a/include/uapi/linux/videodev2.h
|
|
||||||
+++ b/include/uapi/linux/videodev2.h
|
|
||||||
@@ -1630,6 +1630,7 @@ enum v4l2_ctrl_type {
|
|
||||||
V4L2_CTRL_TYPE_U8 = 0x0100,
|
|
||||||
V4L2_CTRL_TYPE_U16 = 0x0101,
|
|
||||||
V4L2_CTRL_TYPE_U32 = 0x0102,
|
|
||||||
+ V4L2_CTRL_TYPE_JPEG_QUANTIZATION = 0x0103,
|
|
||||||
};
|
|
||||||
|
|
||||||
/* Used in the VIDIOC_QUERYCTRL ioctl for querying controls */
|
|
||||||
--
|
|
||||||
2.16.4
|
|
||||||
|
|
@@ -1,35 +0,0 @@
|
|||||||
From 604ea7fc311af2b3a41e7fe3b4fbde0ee03dfb9c Mon Sep 17 00:00:00 2001
|
|
||||||
From: Myy Miouyouyou <myy@miouyouyou.fr>
|
|
||||||
Date: Thu, 19 Oct 2017 21:09:50 +0200
|
|
||||||
Subject: [PATCH 04/28] dts: rk3288: miqi: Enabling the Mali GPU node
|
|
||||||
|
|
||||||
Why is the MiQi the only one left without a working mali GPU node ?
|
|
||||||
|
|
||||||
Seriously, is there a rk3288 chipset WITHOUT a mali GPU ? Couldn't
|
|
||||||
they enable it once in the DTSI, instead of defining it as "disabled"
|
|
||||||
and enabling it in every DTS file ?
|
|
||||||
|
|
||||||
Signed-off-by: Myy Miouyouyou <myy@miouyouyou.fr>
|
|
||||||
---
|
|
||||||
arch/arm/boot/dts/rk3288-miqi.dts | 5 +++++
|
|
||||||
1 file changed, 5 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/arch/arm/boot/dts/rk3288-miqi.dts b/arch/arm/boot/dts/rk3288-miqi.dts
|
|
||||||
index 4d923aa6..3cd60674 100644
|
|
||||||
--- a/arch/arm/boot/dts/rk3288-miqi.dts
|
|
||||||
+++ b/arch/arm/boot/dts/rk3288-miqi.dts
|
|
||||||
@@ -149,6 +149,11 @@
|
|
||||||
status = "ok";
|
|
||||||
};
|
|
||||||
|
|
||||||
+&gpu {
|
|
||||||
+ mali-supply = <&vdd_gpu>;
|
|
||||||
+ status = "okay";
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
&hdmi {
|
|
||||||
ddc-i2c-bus = <&i2c5>;
|
|
||||||
status = "okay";
|
|
||||||
--
|
|
||||||
2.11.0
|
|
||||||
|
|
@@ -1,45 +0,0 @@
|
|||||||
From 89e5763110ca77d68a4be00cd97a638adc2401d5 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Willy Tarreau <w@1wt.eu>
|
|
||||||
Date: Tue, 2 Aug 2016 08:31:00 +0200
|
|
||||||
Subject: [PATCH 05/28] ARM: dts: rockchip: fix the regulator's voltage range
|
|
||||||
on MiQi board
|
|
||||||
|
|
||||||
The board declared too narrow a voltage range for the CPU and GPU
|
|
||||||
regulators, preventing it from using the full CPU frequency range.
|
|
||||||
The regulators support 712500 to 1500000 microvolts.
|
|
||||||
|
|
||||||
Signed-off-by: Willy Tarreau <w@1wt.eu>
|
|
||||||
(cherry picked from commit 95330e63a9295a2632cee8cce5db80677f01857a)
|
|
||||||
---
|
|
||||||
arch/arm/boot/dts/rk3288-miqi.dts | 8 ++++----
|
|
||||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/arch/arm/boot/dts/rk3288-miqi.dts b/arch/arm/boot/dts/rk3288-miqi.dts
|
|
||||||
index 3cd60674..a1c3cdaa 100644
|
|
||||||
--- a/arch/arm/boot/dts/rk3288-miqi.dts
|
|
||||||
+++ b/arch/arm/boot/dts/rk3288-miqi.dts
|
|
||||||
@@ -168,8 +168,8 @@
|
|
||||||
fcs,suspend-voltage-selector = <1>;
|
|
||||||
reg = <0x40>;
|
|
||||||
regulator-name = "vdd_cpu";
|
|
||||||
- regulator-min-microvolt = <850000>;
|
|
||||||
- regulator-max-microvolt = <1350000>;
|
|
||||||
+ regulator-min-microvolt = <712500>;
|
|
||||||
+ regulator-max-microvolt = <1500000>;
|
|
||||||
regulator-always-on;
|
|
||||||
regulator-boot-on;
|
|
||||||
regulator-enable-ramp-delay = <300>;
|
|
||||||
@@ -182,8 +182,8 @@
|
|
||||||
fcs,suspend-voltage-selector = <1>;
|
|
||||||
reg = <0x41>;
|
|
||||||
regulator-name = "vdd_gpu";
|
|
||||||
- regulator-min-microvolt = <850000>;
|
|
||||||
- regulator-max-microvolt = <1350000>;
|
|
||||||
+ regulator-min-microvolt = <712500>;
|
|
||||||
+ regulator-max-microvolt = <1500000>;
|
|
||||||
regulator-always-on;
|
|
||||||
vin-supply = <&vcc_sys>;
|
|
||||||
};
|
|
||||||
--
|
|
||||||
2.11.0
|
|
||||||
|
|
@@ -1,46 +0,0 @@
|
|||||||
From c27e445527e949f3ef46d5326066196969c17d23 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Myy <myy@miouyouyou.fr>
|
|
||||||
Date: Sun, 12 Mar 2017 19:43:15 +0000
|
|
||||||
Subject: [PATCH 06/28] ARM: dts: rockchip: add the MiQi board's fan definition
|
|
||||||
|
|
||||||
The MiQi board is sold with an enclosure in which a fan is connected
|
|
||||||
to the second LED output, and configured by default in "heartbeat"
|
|
||||||
mode so that it rotates slowly and increases when the CPU load
|
|
||||||
increases, ensuring appropriate cooling by default. This LED output
|
|
||||||
is called "Fan" in the original kernel and connected to GPIO18
|
|
||||||
(gpiochip 0, pin 18). Here we called it "miqi:green:fan" to stay
|
|
||||||
consistent with the kernel's naming conventions.
|
|
||||||
|
|
||||||
It's worth noting that without this patch the fan doesn't work at
|
|
||||||
all, risking to make the board overheat.
|
|
||||||
|
|
||||||
Fixes: 162718c (v4.7)
|
|
||||||
Cc: Heiko Stuebner <heiko@sntech.de>
|
|
||||||
Signed-off-by: Willy Tarreau <w@1wt.eu>
|
|
||||||
|
|
||||||
Signed-off-by: Myy <myy@miouyouyou.fr>
|
|
||||||
---
|
|
||||||
arch/arm/boot/dts/rk3288-miqi.dts | 7 +++++++
|
|
||||||
1 file changed, 7 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/arch/arm/boot/dts/rk3288-miqi.dts b/arch/arm/boot/dts/rk3288-miqi.dts
|
|
||||||
index a1c3cdaa..0e383595 100644
|
|
||||||
--- a/arch/arm/boot/dts/rk3288-miqi.dts
|
|
||||||
+++ b/arch/arm/boot/dts/rk3288-miqi.dts
|
|
||||||
@@ -67,6 +67,13 @@
|
|
||||||
leds {
|
|
||||||
compatible = "gpio-leds";
|
|
||||||
|
|
||||||
+ fan {
|
|
||||||
+ gpios = <&gpio0 RK_PC2 GPIO_ACTIVE_HIGH>;
|
|
||||||
+ label = "miqi:green:fan";
|
|
||||||
+ linux,default-trigger = "heartbeat";
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+
|
|
||||||
work {
|
|
||||||
gpios = <&gpio7 RK_PA2 GPIO_ACTIVE_HIGH>;
|
|
||||||
label = "miqi:green:user";
|
|
||||||
--
|
|
||||||
2.11.0
|
|
||||||
|
|
@@ -1,41 +0,0 @@
|
|||||||
From e7e092be197c51b4d222a3b4e6638318067b7e6a Mon Sep 17 00:00:00 2001
|
|
||||||
From: Willy Tarreau <w@1wt.eu>
|
|
||||||
Date: Tue, 2 Aug 2016 08:20:53 +0200
|
|
||||||
Subject: [PATCH 07/28] ARM: dts: rockchip: add support for 1800 MHz operation
|
|
||||||
on MiQi board
|
|
||||||
|
|
||||||
This board happily supports 1800 MHz operations (and even more), so
|
|
||||||
let's enable it.
|
|
||||||
|
|
||||||
Signed-off-by: Willy Tarreau <w@1wt.eu>
|
|
||||||
(cherry picked from commit a0b82a29e7873a81f49ac5f50be3df1c7d312a14)
|
|
||||||
---
|
|
||||||
arch/arm/boot/dts/rk3288-miqi.dts | 12 ++++++++++++
|
|
||||||
1 file changed, 12 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/arch/arm/boot/dts/rk3288-miqi.dts b/arch/arm/boot/dts/rk3288-miqi.dts
|
|
||||||
index 0e383595..80603a3d 100644
|
|
||||||
--- a/arch/arm/boot/dts/rk3288-miqi.dts
|
|
||||||
+++ b/arch/arm/boot/dts/rk3288-miqi.dts
|
|
||||||
@@ -126,6 +126,18 @@
|
|
||||||
|
|
||||||
&cpu0 {
|
|
||||||
cpu0-supply = <&vdd_cpu>;
|
|
||||||
+ operating-points = <
|
|
||||||
+ /* KHz uV */
|
|
||||||
+ 1800000 1400000
|
|
||||||
+ 1704000 1350000
|
|
||||||
+ 1608000 1300000
|
|
||||||
+ 1512000 1250000
|
|
||||||
+ 1416000 1200000
|
|
||||||
+ 1200000 1100000
|
|
||||||
+ 1008000 1050000
|
|
||||||
+ 816000 1000000
|
|
||||||
+ 600000 900000
|
|
||||||
+ >;
|
|
||||||
};
|
|
||||||
|
|
||||||
&emmc {
|
|
||||||
--
|
|
||||||
2.11.0
|
|
||||||
|
|
@@ -1,170 +0,0 @@
|
|||||||
From de9dcd5ecab0686022eee243464f35d2c7a34c97 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Myy <myy@miouyouyou.fr>
|
|
||||||
Date: Mon, 16 Jan 2017 12:44:56 +0000
|
|
||||||
Subject: [PATCH 08/28] Readapt: ARM: dts: rockchip: miqi: add turbo-mode
|
|
||||||
operating points
|
|
||||||
|
|
||||||
Readaptation of Willy Tarreau patch.
|
|
||||||
|
|
||||||
Here's the original commit message:
|
|
||||||
|
|
||||||
By switching to opp-v2 we can declare "turbo-mode" operating points
|
|
||||||
which are only enabled when /sys/devices/system/cpu/cpufreq/boost is
|
|
||||||
set. It is convenient because it allows to boot, set a safe powersave
|
|
||||||
governor, enable boost, limit scaling_max_freq to a safe value, then
|
|
||||||
change the governor to performance or ondemand, and the frequency can
|
|
||||||
then be manually adjusted by only touching scaling_max_freq.
|
|
||||||
|
|
||||||
New values are 1896, 1920, 1992, 2016, 2040 MHz, 2064, 2088, 2112,
|
|
||||||
2136, 2160, 2184, 2208. MiQi boards work fine up to 2112 with a very
|
|
||||||
good power supply (5.2V/3A real) and a strong heatsink. Higher
|
|
||||||
frequencies may randomly work. At least 1992 is rock solid for hours
|
|
||||||
using "openssl speed -multi 4". The other ones have only been tested
|
|
||||||
for a few minutes. Frequencies of 1896 and 1920 MHz use 1.425V.
|
|
||||||
1992 MHz uses 1.45V. 2016, 2040 and 2064 use 1.475V. 2088 and above
|
|
||||||
use 1.500V. 2160, 2184 and 2208 cause the lowest frequency to be
|
|
||||||
picked. It's obvious that it's a sign issue somewhere in the kernel
|
|
||||||
but this one was not found yet.
|
|
||||||
|
|
||||||
Signed-off-by: Myy <myy@miouyouyou.fr>
|
|
||||||
---
|
|
||||||
arch/arm/boot/dts/rk3288-miqi.dts | 120 +++++++++++++++++++++++++++++++++-----
|
|
||||||
1 file changed, 107 insertions(+), 13 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/arch/arm/boot/dts/rk3288-miqi.dts b/arch/arm/boot/dts/rk3288-miqi.dts
|
|
||||||
index 80603a3d..d7fde483 100644
|
|
||||||
--- a/arch/arm/boot/dts/rk3288-miqi.dts
|
|
||||||
+++ b/arch/arm/boot/dts/rk3288-miqi.dts
|
|
||||||
@@ -122,22 +122,116 @@
|
|
||||||
regulator-always-on;
|
|
||||||
regulator-boot-on;
|
|
||||||
};
|
|
||||||
-};
|
|
||||||
|
|
||||||
+
|
|
||||||
+ cpu0_opp_table: opp_table0 {
|
|
||||||
+ compatible = "operating-points-v2";
|
|
||||||
+ opp-shared;
|
|
||||||
+
|
|
||||||
+ opp@600000000 {
|
|
||||||
+ opp-hz = /bits/ 64 <600000000>;
|
|
||||||
+ opp-microvolt = <900000>;
|
|
||||||
+ };
|
|
||||||
+ opp@816000000 {
|
|
||||||
+ opp-hz = /bits/ 64 <816000000>;
|
|
||||||
+ opp-microvolt = <1000000>;
|
|
||||||
+ };
|
|
||||||
+ opp@1008000000 {
|
|
||||||
+ opp-hz = /bits/ 64 <1008000000>;
|
|
||||||
+ opp-microvolt = <1050000>;
|
|
||||||
+ };
|
|
||||||
+ opp@1200000000 {
|
|
||||||
+ opp-hz = /bits/ 64 <1200000000>;
|
|
||||||
+ opp-microvolt = <1100000>;
|
|
||||||
+ };
|
|
||||||
+ opp@1416000000 {
|
|
||||||
+ opp-hz = /bits/ 64 <1416000000>;
|
|
||||||
+ opp-microvolt = <1200000>;
|
|
||||||
+ };
|
|
||||||
+ opp@1512000000 {
|
|
||||||
+ opp-hz = /bits/ 64 <1512000000>;
|
|
||||||
+ opp-microvolt = <1250000>;
|
|
||||||
+ };
|
|
||||||
+ opp@1608000000 {
|
|
||||||
+ opp-hz = /bits/ 64 <1608000000>;
|
|
||||||
+ opp-microvolt = <1300000>;
|
|
||||||
+ };
|
|
||||||
+ opp@1704000000 {
|
|
||||||
+ opp-hz = /bits/ 64 <1704000000>;
|
|
||||||
+ opp-microvolt = <1350000>;
|
|
||||||
+ };
|
|
||||||
+ opp@1800000000 {
|
|
||||||
+ opp-hz = /bits/ 64 <1800000000>;
|
|
||||||
+ opp-microvolt = <1400000>;
|
|
||||||
+ };
|
|
||||||
+ /* boot-only frequencies below */
|
|
||||||
+ opp@1896000000 {
|
|
||||||
+ opp-hz = /bits/ 64 <1896000000>;
|
|
||||||
+ opp-microvolt = <1425000>;
|
|
||||||
+ turbo-mode;
|
|
||||||
+ };
|
|
||||||
+ opp@1920000000 {
|
|
||||||
+ opp-hz = /bits/ 64 <1920000000>;
|
|
||||||
+ opp-microvolt = <1425000>;
|
|
||||||
+ turbo-mode;
|
|
||||||
+ };
|
|
||||||
+ opp@1992000000 {
|
|
||||||
+ opp-hz = /bits/ 64 <1992000000>;
|
|
||||||
+ opp-microvolt = <1450000>;
|
|
||||||
+ turbo-mode;
|
|
||||||
+ };
|
|
||||||
+ opp@2016000000 {
|
|
||||||
+ opp-hz = /bits/ 64 <2016000000>;
|
|
||||||
+ opp-microvolt = <1475000>;
|
|
||||||
+ turbo-mode;
|
|
||||||
+ };
|
|
||||||
+ opp@2040000000 {
|
|
||||||
+ opp-hz = /bits/ 64 <2040000000>;
|
|
||||||
+ opp-microvolt = <1475000>;
|
|
||||||
+ turbo-mode;
|
|
||||||
+ };
|
|
||||||
+ opp@2064000000 {
|
|
||||||
+ opp-hz = /bits/ 64 <2064000000>;
|
|
||||||
+ opp-microvolt = <1475000>;
|
|
||||||
+ turbo-mode;
|
|
||||||
+ };
|
|
||||||
+ opp@2088000000 {
|
|
||||||
+ opp-hz = /bits/ 64 <2088000000>;
|
|
||||||
+ opp-microvolt = <1500000>;
|
|
||||||
+ turbo-mode;
|
|
||||||
+ };
|
|
||||||
+ opp@2112000000 {
|
|
||||||
+ opp-hz = /bits/ 64 <2112000000>;
|
|
||||||
+ opp-microvolt = <1500000>;
|
|
||||||
+ turbo-mode;
|
|
||||||
+ };
|
|
||||||
+ opp@2136000000 {
|
|
||||||
+ opp-hz = /bits/ 64 <2136000000>;
|
|
||||||
+ opp-microvolt = <1500000>;
|
|
||||||
+ turbo-mode;
|
|
||||||
+ };
|
|
||||||
+ opp@2160000000 {
|
|
||||||
+ opp-hz = /bits/ 64 <2160000000>;
|
|
||||||
+ opp-microvolt = <1500000>;
|
|
||||||
+ turbo-mode;
|
|
||||||
+ };
|
|
||||||
+ opp@2184000000 {
|
|
||||||
+ opp-hz = /bits/ 64 <2184000000>;
|
|
||||||
+ opp-microvolt = <1500000>;
|
|
||||||
+ turbo-mode;
|
|
||||||
+ };
|
|
||||||
+ opp@2208000000 {
|
|
||||||
+ opp-hz = /bits/ 64 <2208000000>;
|
|
||||||
+ opp-microvolt = <1500000>;
|
|
||||||
+ turbo-mode;
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
&cpu0 {
|
|
||||||
cpu0-supply = <&vdd_cpu>;
|
|
||||||
- operating-points = <
|
|
||||||
- /* KHz uV */
|
|
||||||
- 1800000 1400000
|
|
||||||
- 1704000 1350000
|
|
||||||
- 1608000 1300000
|
|
||||||
- 1512000 1250000
|
|
||||||
- 1416000 1200000
|
|
||||||
- 1200000 1100000
|
|
||||||
- 1008000 1050000
|
|
||||||
- 816000 1000000
|
|
||||||
- 600000 900000
|
|
||||||
- >;
|
|
||||||
+
|
|
||||||
+ operating-points-v2 = <&cpu0_opp_table>;
|
|
||||||
};
|
|
||||||
|
|
||||||
&emmc {
|
|
||||||
--
|
|
||||||
2.11.0
|
|
||||||
|
|
@@ -1,61 +0,0 @@
|
|||||||
From 771bcfe1735e42650b763e52a042a9fd98b2fa5b Mon Sep 17 00:00:00 2001
|
|
||||||
From: Myy Miouyouyou <myy@miouyouyou.fr>
|
|
||||||
Date: Thu, 19 Oct 2017 21:20:43 +0200
|
|
||||||
Subject: [PATCH 09/28] ARM: DTSI: rk3288.dtsi: Missing GRF handles
|
|
||||||
|
|
||||||
Add missing GRF handles.
|
|
||||||
|
|
||||||
This patch is taken from the patches provided by the ARMbian team.
|
|
||||||
|
|
||||||
Signed-off-by: Myy Miouyouyou <myy@miouyouyou.fr>
|
|
||||||
---
|
|
||||||
arch/arm/boot/dts/rk3288.dtsi | 5 +++++
|
|
||||||
1 file changed, 5 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/arch/arm/boot/dts/rk3288.dtsi b/arch/arm/boot/dts/rk3288.dtsi
|
|
||||||
index 356ed1e6..5b789528 100644
|
|
||||||
--- a/arch/arm/boot/dts/rk3288.dtsi
|
|
||||||
+++ b/arch/arm/boot/dts/rk3288.dtsi
|
|
||||||
@@ -547,6 +547,7 @@
|
|
||||||
pinctrl-2 = <&otp_gpio>;
|
|
||||||
#thermal-sensor-cells = <1>;
|
|
||||||
rockchip,hw-tshut-temp = <95000>;
|
|
||||||
+ rockchip,grf = <&grf>;
|
|
||||||
status = "disabled";
|
|
||||||
};
|
|
||||||
|
|
||||||
@@ -655,6 +656,7 @@
|
|
||||||
pinctrl-0 = <&pwm0_pin>;
|
|
||||||
clocks = <&cru PCLK_PWM>;
|
|
||||||
clock-names = "pwm";
|
|
||||||
+ rockchip,grf = <&grf>;
|
|
||||||
status = "disabled";
|
|
||||||
};
|
|
||||||
|
|
||||||
@@ -666,6 +668,7 @@
|
|
||||||
pinctrl-0 = <&pwm1_pin>;
|
|
||||||
clocks = <&cru PCLK_PWM>;
|
|
||||||
clock-names = "pwm";
|
|
||||||
+ rockchip,grf = <&grf>;
|
|
||||||
status = "disabled";
|
|
||||||
};
|
|
||||||
|
|
||||||
@@ -677,6 +680,7 @@
|
|
||||||
pinctrl-0 = <&pwm2_pin>;
|
|
||||||
clocks = <&cru PCLK_PWM>;
|
|
||||||
clock-names = "pwm";
|
|
||||||
+ rockchip,grf = <&grf>;
|
|
||||||
status = "disabled";
|
|
||||||
};
|
|
||||||
|
|
||||||
@@ -688,6 +692,7 @@
|
|
||||||
pinctrl-0 = <&pwm3_pin>;
|
|
||||||
clocks = <&cru PCLK_PWM>;
|
|
||||||
clock-names = "pwm";
|
|
||||||
+ rockchip,grf = <&grf>;
|
|
||||||
status = "disabled";
|
|
||||||
};
|
|
||||||
|
|
||||||
--
|
|
||||||
2.11.0
|
|
||||||
|
|
@@ -1,31 +0,0 @@
|
|||||||
From 062488e4b8fd552c01e1104b3bc91a6f7ffe6c41 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Myy Miouyouyou <myy@miouyouyou.fr>
|
|
||||||
Date: Thu, 19 Oct 2017 21:24:47 +0200
|
|
||||||
Subject: [PATCH 10/28] RK3288: DTSI: rk3288.dtsi: Add missing SPI2 pinctrl
|
|
||||||
|
|
||||||
The spi2_cs1 pin reference is missing in the spi2 first pin control
|
|
||||||
definition.
|
|
||||||
|
|
||||||
This patch is taken from the patches provided by the ARMbian team.
|
|
||||||
|
|
||||||
Signed-off-by: Myy Miouyouyou <myy@miouyouyou.fr>
|
|
||||||
---
|
|
||||||
arch/arm/boot/dts/rk3288.dtsi | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/arch/arm/boot/dts/rk3288.dtsi b/arch/arm/boot/dts/rk3288.dtsi
|
|
||||||
index 5b789528..9ed532cc 100644
|
|
||||||
--- a/arch/arm/boot/dts/rk3288.dtsi
|
|
||||||
+++ b/arch/arm/boot/dts/rk3288.dtsi
|
|
||||||
@@ -334,7 +334,7 @@
|
|
||||||
dma-names = "tx", "rx";
|
|
||||||
interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
|
|
||||||
pinctrl-names = "default";
|
|
||||||
- pinctrl-0 = <&spi2_clk &spi2_tx &spi2_rx &spi2_cs0>;
|
|
||||||
+ pinctrl-0 = <&spi2_clk &spi2_tx &spi2_rx &spi2_cs0 &spi2_cs1>;
|
|
||||||
reg = <0x0 0xff130000 0x0 0x1000>;
|
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
--
|
|
||||||
2.11.0
|
|
||||||
|
|
@@ -1,27 +0,0 @@
|
|||||||
From af8d73ec0df1dde1e2fe1674c5708d4c30385ba9 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Myy <myy@miouyouyou.fr>
|
|
||||||
Date: Mon, 5 Jun 2017 12:37:17 +0000
|
|
||||||
Subject: [PATCH 11/28] Added support for Tinkerboard's SPI interface
|
|
||||||
|
|
||||||
Imported from ARMbian
|
|
||||||
|
|
||||||
Signed-off-by: Myy <myy@miouyouyou.fr>
|
|
||||||
---
|
|
||||||
drivers/spi/spidev.c | 1 +
|
|
||||||
1 file changed, 1 insertion(+)
|
|
||||||
|
|
||||||
diff --git a/drivers/spi/spidev.c b/drivers/spi/spidev.c
|
|
||||||
index cda10719..a6287475 100644
|
|
||||||
--- a/drivers/spi/spidev.c
|
|
||||||
+++ b/drivers/spi/spidev.c
|
|
||||||
@@ -669,6 +669,7 @@ static const struct of_device_id spidev_dt_ids[] = {
|
|
||||||
{ .compatible = "lineartechnology,ltc2488" },
|
|
||||||
{ .compatible = "ge,achc" },
|
|
||||||
{ .compatible = "semtech,sx1301" },
|
|
||||||
+ { .compatible = "rockchip,spi_tinker" },
|
|
||||||
{},
|
|
||||||
};
|
|
||||||
MODULE_DEVICE_TABLE(of, spidev_dt_ids);
|
|
||||||
--
|
|
||||||
2.11.0
|
|
||||||
|
|
@@ -1,56 +0,0 @@
|
|||||||
From 7af8d2bf732cb3baab7d926ed8a7e061e7a09ad9 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Myy Miouyouyou <myy@miouyouyou.fr>
|
|
||||||
Date: Thu, 19 Oct 2017 21:39:00 +0200
|
|
||||||
Subject: [PATCH 13/28] ARM: DTSI: rk3288.dtsi: Adding cells addresses and
|
|
||||||
sizes of MMC nodes
|
|
||||||
|
|
||||||
Imported from the Rockchip 4.4 patches.
|
|
||||||
|
|
||||||
Signed-off-by: Myy Miouyouyou <myy@miouyouyou.fr>
|
|
||||||
---
|
|
||||||
arch/arm/boot/dts/rk3288.dtsi | 8 ++++++++
|
|
||||||
1 file changed, 8 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/arch/arm/boot/dts/rk3288.dtsi b/arch/arm/boot/dts/rk3288.dtsi
|
|
||||||
index be985f02..14ef8202 100644
|
|
||||||
--- a/arch/arm/boot/dts/rk3288.dtsi
|
|
||||||
+++ b/arch/arm/boot/dts/rk3288.dtsi
|
|
||||||
@@ -236,6 +236,8 @@
|
|
||||||
clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
|
|
||||||
fifo-depth = <0x100>;
|
|
||||||
interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
|
|
||||||
+ #address-cells = <1>;
|
|
||||||
+ #size-cells = <0>;
|
|
||||||
reg = <0x0 0xff0c0000 0x0 0x4000>;
|
|
||||||
resets = <&cru SRST_MMC0>;
|
|
||||||
reset-names = "reset";
|
|
||||||
@@ -250,6 +252,8 @@
|
|
||||||
clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
|
|
||||||
fifo-depth = <0x100>;
|
|
||||||
interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
|
|
||||||
+ #address-cells = <1>;
|
|
||||||
+ #size-cells = <0>;
|
|
||||||
reg = <0x0 0xff0d0000 0x0 0x4000>;
|
|
||||||
resets = <&cru SRST_SDIO0>;
|
|
||||||
reset-names = "reset";
|
|
||||||
@@ -264,6 +268,8 @@
|
|
||||||
clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
|
|
||||||
fifo-depth = <0x100>;
|
|
||||||
interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
|
|
||||||
+ #address-cells = <1>;
|
|
||||||
+ #size-cells = <0>;
|
|
||||||
reg = <0x0 0xff0e0000 0x0 0x4000>;
|
|
||||||
resets = <&cru SRST_SDIO1>;
|
|
||||||
reset-names = "reset";
|
|
||||||
@@ -278,6 +284,8 @@
|
|
||||||
clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
|
|
||||||
fifo-depth = <0x100>;
|
|
||||||
interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
|
|
||||||
+ #address-cells = <1>;
|
|
||||||
+ #size-cells = <0>;
|
|
||||||
reg = <0x0 0xff0f0000 0x0 0x4000>;
|
|
||||||
resets = <&cru SRST_EMMC>;
|
|
||||||
reset-names = "reset";
|
|
||||||
--
|
|
||||||
2.11.0
|
|
||||||
|
|
@@ -1,27 +0,0 @@
|
|||||||
From ac220d592aa38b9b717d36f7bb93f7be5a08f6b3 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Myy Miouyouyou <myy@miouyouyou.fr>
|
|
||||||
Date: Thu, 19 Oct 2017 21:43:51 +0200
|
|
||||||
Subject: [PATCH 14/28] ARM: DTSI: rk3288.dtsi: Adding missing EDP power domain
|
|
||||||
|
|
||||||
Imported from Rockchip 4.4 kernel patches.
|
|
||||||
|
|
||||||
Signed-off-by: Myy Miouyouyou <myy@miouyouyou.fr>
|
|
||||||
---
|
|
||||||
arch/arm/boot/dts/rk3288.dtsi | 1 +
|
|
||||||
1 file changed, 1 insertion(+)
|
|
||||||
|
|
||||||
diff --git a/arch/arm/boot/dts/rk3288.dtsi b/arch/arm/boot/dts/rk3288.dtsi
|
|
||||||
index 14ef8202..10ecebb4 100644
|
|
||||||
--- a/arch/arm/boot/dts/rk3288.dtsi
|
|
||||||
+++ b/arch/arm/boot/dts/rk3288.dtsi
|
|
||||||
@@ -1105,6 +1105,7 @@
|
|
||||||
interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
|
|
||||||
clocks = <&cru SCLK_EDP>, <&cru PCLK_EDP_CTRL>;
|
|
||||||
clock-names = "dp", "pclk";
|
|
||||||
+ power-domains = <&power RK3288_PD_VIO>;
|
|
||||||
phys = <&edp_phy>;
|
|
||||||
phy-names = "dp";
|
|
||||||
resets = <&cru SRST_EDP>;
|
|
||||||
--
|
|
||||||
2.11.0
|
|
||||||
|
|
@@ -1,28 +0,0 @@
|
|||||||
From c5af6798c9a411b3f550f463182a4b4904a21ec2 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Myy Miouyouyou <myy@miouyouyou.fr>
|
|
||||||
Date: Thu, 19 Oct 2017 21:51:14 +0200
|
|
||||||
Subject: [PATCH 16/28] ARM: DTSI: rk3288.dtsi: Adding missing VOPB registers
|
|
||||||
|
|
||||||
Imported from @wzyy2 patches... I think...
|
|
||||||
|
|
||||||
Signed-off-by: Myy Miouyouyou <myy@miouyouyou.fr>
|
|
||||||
---
|
|
||||||
arch/arm/boot/dts/rk3288.dtsi | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/arch/arm/boot/dts/rk3288.dtsi b/arch/arm/boot/dts/rk3288.dtsi
|
|
||||||
index 455446f6..125f8835 100644
|
|
||||||
--- a/arch/arm/boot/dts/rk3288.dtsi
|
|
||||||
+++ b/arch/arm/boot/dts/rk3288.dtsi
|
|
||||||
@@ -987,7 +987,7 @@
|
|
||||||
|
|
||||||
vopb: vop@ff930000 {
|
|
||||||
compatible = "rockchip,rk3288-vop";
|
|
||||||
- reg = <0x0 0xff930000 0x0 0x19c>;
|
|
||||||
+ reg = <0x0 0xff930000 0x0 0x19c>, <0x0 0xff931000 0x0 0x1000>;
|
|
||||||
interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
|
|
||||||
clocks = <&cru ACLK_VOP0>, <&cru DCLK_VOP0>, <&cru HCLK_VOP0>;
|
|
||||||
clock-names = "aclk_vop", "dclk_vop", "hclk_vop";
|
|
||||||
--
|
|
||||||
2.11.0
|
|
||||||
|
|
@@ -1,31 +0,0 @@
|
|||||||
From a0602b2724893de7ac9b4190a7a6bb66458da2d5 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Myy Miouyouyou <myy@miouyouyou.fr>
|
|
||||||
Date: Thu, 19 Oct 2017 21:54:37 +0200
|
|
||||||
Subject: [PATCH 17/28] ARM: DTSI: rk3288.dtsi: Fixed the SPDIF node address
|
|
||||||
|
|
||||||
Now, the typo is only in the name of the node itself, not in the
|
|
||||||
actual registers addresses definition.
|
|
||||||
|
|
||||||
Still, this ought to be fixed one day !
|
|
||||||
|
|
||||||
Signed-off-by: Myy Miouyouyou <myy@miouyouyou.fr>
|
|
||||||
---
|
|
||||||
arch/arm/boot/dts/rk3288.dtsi | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/arch/arm/boot/dts/rk3288.dtsi b/arch/arm/boot/dts/rk3288.dtsi
|
|
||||||
index 125f8835..e5d3d3c9 100644
|
|
||||||
--- a/arch/arm/boot/dts/rk3288.dtsi
|
|
||||||
+++ b/arch/arm/boot/dts/rk3288.dtsi
|
|
||||||
@@ -922,7 +922,7 @@
|
|
||||||
status = "disabled";
|
|
||||||
};
|
|
||||||
|
|
||||||
- spdif: sound@ff88b0000 {
|
|
||||||
+ spdif: sound@ff8b0000 {
|
|
||||||
compatible = "rockchip,rk3288-spdif", "rockchip,rk3066-spdif";
|
|
||||||
reg = <0x0 0xff8b0000 0x0 0x10000>;
|
|
||||||
#sound-dai-cells = <0>;
|
|
||||||
--
|
|
||||||
2.11.0
|
|
||||||
|
|
@@ -1,165 +0,0 @@
|
|||||||
From 2715f4a9ab5c169c546029a61eebb0bde6619b0e Mon Sep 17 00:00:00 2001
|
|
||||||
From: Myy Miouyouyou <myy@miouyouyou.fr>
|
|
||||||
Date: Thu, 19 Oct 2017 22:12:48 +0200
|
|
||||||
Subject: [PATCH 18/28] ARM: DTS: rk3288-tinker.dts: Enabling SDIO, Wireless
|
|
||||||
and Bluetooth
|
|
||||||
|
|
||||||
Adding the appropriate nodes in order to exploit the WiFi capabilities
|
|
||||||
of the board.
|
|
||||||
Since these capabilities are provided through SDIO, and the SDIO
|
|
||||||
nodes were not defined, these were added too.
|
|
||||||
|
|
||||||
These seems to depend on each other so they are added in one big
|
|
||||||
patch.
|
|
||||||
|
|
||||||
Split if necessary.
|
|
||||||
|
|
||||||
Bluetooth and uart0 (AKA Bluetooth UART) definitions were also added
|
|
||||||
in order to deal with all the wireless techs in one patch.
|
|
||||||
|
|
||||||
Signed-off-by: Myy Miouyouyou <myy@miouyouyou.fr>
|
|
||||||
---
|
|
||||||
arch/arm/boot/dts/rk3288-tinker.dts | 82 ++++++++++++++++++++++++++++++++++++-
|
|
||||||
1 file changed, 81 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/arch/arm/boot/dts/rk3288-tinker.dts b/arch/arm/boot/dts/rk3288-tinker.dts
|
|
||||||
index 346b0d8b..c552fd95 100644
|
|
||||||
--- a/arch/arm/boot/dts/rk3288-tinker.dts
|
|
||||||
+++ b/arch/arm/boot/dts/rk3288-tinker.dts
|
|
||||||
@@ -44,6 +44,7 @@
|
|
||||||
|
|
||||||
#include "rk3288.dtsi"
|
|
||||||
#include <dt-bindings/input/input.h>
|
|
||||||
+#include <dt-bindings/clock/rockchip,rk808.h>
|
|
||||||
|
|
||||||
/ {
|
|
||||||
model = "Rockchip RK3288 Tinker Board";
|
|
||||||
@@ -114,6 +115,24 @@
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
+ /* This is essential to get SDIO devices working.
|
|
||||||
+ The Wifi depends on SDIO ! */
|
|
||||||
+ sdio_pwrseq: sdio-pwrseq {
|
|
||||||
+ compatible = "mmc-pwrseq-simple";
|
|
||||||
+ clocks = <&rk808 RK808_CLKOUT1>;
|
|
||||||
+ clock-names = "ext_clock";
|
|
||||||
+ pinctrl-names = "default";
|
|
||||||
+ pinctrl-0 = <&chip_enable_h>, <&wifi_enable_h>;
|
|
||||||
+
|
|
||||||
+ /*
|
|
||||||
+ * On the module itself this is one of these (depending
|
|
||||||
+ * on the actual card populated):
|
|
||||||
+ * - SDIO_RESET_L_WL_REG_ON
|
|
||||||
+ * - PDN (power down when low)
|
|
||||||
+ */
|
|
||||||
+ reset-gpios = <&gpio4 RK_PD4 GPIO_ACTIVE_LOW>, <&gpio4 RK_PD3 GPIO_ACTIVE_LOW>;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
vcc_sys: vsys-regulator {
|
|
||||||
compatible = "regulator-fixed";
|
|
||||||
regulator-name = "vcc_sys";
|
|
||||||
@@ -134,6 +153,28 @@
|
|
||||||
startup-delay-us = <100000>;
|
|
||||||
vin-supply = <&vcc_io>;
|
|
||||||
};
|
|
||||||
+
|
|
||||||
+ wireless-wlan {
|
|
||||||
+ compatible = "wlan-platdata";
|
|
||||||
+ rockchip,grf = <&grf>;
|
|
||||||
+ wifi_chip_type = "8723bs";
|
|
||||||
+ sdio_vref = <1800>;
|
|
||||||
+ WIFI,host_wake_irq = <&gpio4 30 GPIO_ACTIVE_HIGH>;
|
|
||||||
+ status = "okay";
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ wireless-bluetooth {
|
|
||||||
+ compatible = "bluetooth-platdata";
|
|
||||||
+ uart_rts_gpios = <&gpio4 19 GPIO_ACTIVE_LOW>;
|
|
||||||
+ pinctrl-names = "default","rts_gpio";
|
|
||||||
+ pinctrl-0 = <&uart0_rts>;
|
|
||||||
+ pinctrl-1 = <&uart0_gpios>;
|
|
||||||
+ BT,reset_gpio = <&gpio4 29 GPIO_ACTIVE_HIGH>;
|
|
||||||
+ BT,wake_gpio = <&gpio4 26 GPIO_ACTIVE_HIGH>;
|
|
||||||
+ BT,wake_host_irq = <&gpio4 31 GPIO_ACTIVE_HIGH>;
|
|
||||||
+ status = "okay";
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
};
|
|
||||||
|
|
||||||
&cpu0 {
|
|
||||||
@@ -373,10 +414,30 @@
|
|
||||||
|
|
||||||
&io_domains {
|
|
||||||
status = "okay";
|
|
||||||
-
|
|
||||||
+ rockchip,grf = <&grf>;
|
|
||||||
+ wifi-supply = <&vcc_18>;
|
|
||||||
sdcard-supply = <&vccio_sd>;
|
|
||||||
};
|
|
||||||
|
|
||||||
+&sdio0 {
|
|
||||||
+ status = "okay";
|
|
||||||
+ clock-frequency = <50000000>;
|
|
||||||
+ clock-freq-min-max = <200000 50000000>;
|
|
||||||
+ bus-width = <4>;
|
|
||||||
+ cap-sd-highspeed;
|
|
||||||
+ cap-sdio-irq;
|
|
||||||
+ disable-wp;
|
|
||||||
+ keep-power-in-suspend;
|
|
||||||
+ mmc-pwrseq = <&sdio_pwrseq>;
|
|
||||||
+ non-removable;
|
|
||||||
+ num-slots = <1>;
|
|
||||||
+ pinctrl-names = "default";
|
|
||||||
+ pinctrl-0 = <&sdio0_bus4 &sdio0_cmd &sdio0_clk>;
|
|
||||||
+ sd-uhs-sdr104;
|
|
||||||
+ supports-sdio;
|
|
||||||
+
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
&pinctrl {
|
|
||||||
pcfg_pull_none_drv_8ma: pcfg-pull-none-drv-8ma {
|
|
||||||
drive-strength = <8>;
|
|
||||||
@@ -422,6 +483,16 @@
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
+ sdio-pwrseq {
|
|
||||||
+ wifi_enable_h: wifienable-h {
|
|
||||||
+ rockchip,pins = <4 28 RK_FUNC_GPIO &pcfg_pull_none>;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ chip_enable_h: chip-enable-h {
|
|
||||||
+ rockchip,pins = <4 27 RK_FUNC_GPIO &pcfg_pull_none>;
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
sdmmc {
|
|
||||||
sdmmc_bus4: sdmmc-bus4 {
|
|
||||||
rockchip,pins = <6 16 RK_FUNC_1 &pcfg_pull_up_drv_8ma>,
|
|
||||||
@@ -453,6 +524,13 @@
|
|
||||||
rockchip,pins = <7 8 RK_FUNC_GPIO &pcfg_pull_none>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
+
|
|
||||||
+ wireless-bluetooth {
|
|
||||||
+ uart0_gpios: uart0-gpios {
|
|
||||||
+ rockchip,pins = <4 19 RK_FUNC_GPIO &pcfg_pull_none>;
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
};
|
|
||||||
|
|
||||||
&pwm0 {
|
|
||||||
@@ -485,6 +563,8 @@
|
|
||||||
|
|
||||||
&uart0 {
|
|
||||||
status = "okay";
|
|
||||||
+ pinctrl-names = "default";
|
|
||||||
+ pinctrl-0 = <&uart0_xfer>, <&uart0_cts>;
|
|
||||||
};
|
|
||||||
|
|
||||||
&uart1 {
|
|
||||||
--
|
|
||||||
2.11.0
|
|
||||||
|
|
@@ -1,30 +0,0 @@
|
|||||||
diff --git a/arch/arm/boot/dts/rk3288-tinker.dts b/arch/arm/boot/dts/rk3288-tinker.dts
|
|
||||||
index 07b4af4..7755426 100644
|
|
||||||
--- a/arch/arm/boot/dts/rk3288-tinker.dts
|
|
||||||
+++ b/arch/arm/boot/dts/rk3288-tinker.dts
|
|
||||||
@@ -162,7 +162,7 @@
|
|
||||||
WIFI,host_wake_irq = <&gpio4 30 GPIO_ACTIVE_HIGH>;
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
-
|
|
||||||
+/*
|
|
||||||
wireless-bluetooth {
|
|
||||||
compatible = "bluetooth-platdata";
|
|
||||||
uart_rts_gpios = <&gpio4 19 GPIO_ACTIVE_LOW>;
|
|
||||||
@@ -174,6 +174,7 @@
|
|
||||||
BT,wake_host_irq = <&gpio4 31 GPIO_ACTIVE_HIGH>;
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
+*/
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
@@ -620,7 +621,7 @@
|
|
||||||
&uart0 {
|
|
||||||
status = "okay";
|
|
||||||
pinctrl-names = "default";
|
|
||||||
- pinctrl-0 = <&uart0_xfer>, <&uart0_cts>;
|
|
||||||
+ pinctrl-0 = <&uart0_xfer>, <&uart0_cts>, <&uart0_rts>;
|
|
||||||
};
|
|
||||||
|
|
||||||
&uart1 {
|
|
@@ -1,29 +0,0 @@
|
|||||||
From d4775f623b25009039a8ef3f28332033c7766ecc Mon Sep 17 00:00:00 2001
|
|
||||||
From: Myy Miouyouyou <myy@miouyouyou.fr>
|
|
||||||
Date: Thu, 19 Oct 2017 22:20:33 +0200
|
|
||||||
Subject: [PATCH 19/28] ARM: DTS: rk3288-tinker.dts: Improving the CPU max
|
|
||||||
voltage
|
|
||||||
|
|
||||||
Taken from the various patches provided by @TonyMac32 .
|
|
||||||
|
|
||||||
Signed-off-by: Myy Miouyouyou <myy@miouyouyou.fr>
|
|
||||||
---
|
|
||||||
arch/arm/boot/dts/rk3288-tinker.dts | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/arch/arm/boot/dts/rk3288-tinker.dts b/arch/arm/boot/dts/rk3288-tinker.dts
|
|
||||||
index c552fd95..4ce94698 100644
|
|
||||||
--- a/arch/arm/boot/dts/rk3288-tinker.dts
|
|
||||||
+++ b/arch/arm/boot/dts/rk3288-tinker.dts
|
|
||||||
@@ -243,7 +243,7 @@
|
|
||||||
regulator-always-on;
|
|
||||||
regulator-boot-on;
|
|
||||||
regulator-min-microvolt = <750000>;
|
|
||||||
- regulator-max-microvolt = <1350000>;
|
|
||||||
+ regulator-max-microvolt = <1450000>;
|
|
||||||
regulator-name = "vdd_arm";
|
|
||||||
regulator-ramp-delay = <6000>;
|
|
||||||
regulator-state-mem {
|
|
||||||
--
|
|
||||||
2.11.0
|
|
||||||
|
|
@@ -1,40 +0,0 @@
|
|||||||
From 39e50ab508d8104a733771a8681908a66a300edd Mon Sep 17 00:00:00 2001
|
|
||||||
From: Myy Miouyouyou <myy@miouyouyou.fr>
|
|
||||||
Date: Thu, 19 Oct 2017 22:25:03 +0200
|
|
||||||
Subject: [PATCH 20/28] ARM: DTS: rk3288-tinker.dts: Setting up the SD
|
|
||||||
regulators
|
|
||||||
|
|
||||||
Some are needed and some are not. Playing with these parameters is
|
|
||||||
required to get reboot working on these boards.
|
|
||||||
|
|
||||||
I still can't believe that these boards can't soft reset correctly.
|
|
||||||
|
|
||||||
Signed-off-by: Myy Miouyouyou <myy@miouyouyou.fr>
|
|
||||||
---
|
|
||||||
arch/arm/boot/dts/rk3288-tinker.dts | 3 ++-
|
|
||||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/arch/arm/boot/dts/rk3288-tinker.dts b/arch/arm/boot/dts/rk3288-tinker.dts
|
|
||||||
index 4ce94698..90c1a251 100644
|
|
||||||
--- a/arch/arm/boot/dts/rk3288-tinker.dts
|
|
||||||
+++ b/arch/arm/boot/dts/rk3288-tinker.dts
|
|
||||||
@@ -333,6 +333,8 @@
|
|
||||||
};
|
|
||||||
|
|
||||||
vccio_sd: LDO_REG5 {
|
|
||||||
+ regulator-always-on;
|
|
||||||
+ regulator-boot-on;
|
|
||||||
regulator-min-microvolt = <1800000>;
|
|
||||||
regulator-max-microvolt = <3300000>;
|
|
||||||
regulator-name = "vccio_sd";
|
|
||||||
@@ -379,7 +381,6 @@
|
|
||||||
};
|
|
||||||
|
|
||||||
vcc33_sd: SWITCH_REG1 {
|
|
||||||
- regulator-always-on;
|
|
||||||
regulator-boot-on;
|
|
||||||
regulator-name = "vcc33_sd";
|
|
||||||
regulator-state-mem {
|
|
||||||
--
|
|
||||||
2.11.0
|
|
||||||
|
|
@@ -1,53 +0,0 @@
|
|||||||
From b0a552add28bf4590b979abb3530b14b6811eec1 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Myy Miouyouyou <myy@miouyouyou.fr>
|
|
||||||
Date: Thu, 19 Oct 2017 22:33:39 +0200
|
|
||||||
Subject: [PATCH 21/28] ARM: DTS: rk3288-tinker.dts: Defined the I2C interfaces
|
|
||||||
|
|
||||||
And all the hardware behind.
|
|
||||||
|
|
||||||
Taken from, and tested by @TonyMac32 .
|
|
||||||
|
|
||||||
Signed-off-by: Myy Miouyouyou <myy@miouyouyou.fr>
|
|
||||||
---
|
|
||||||
arch/arm/boot/dts/rk3288-tinker.dts | 23 +++++++++++++++++++++++
|
|
||||||
1 file changed, 23 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/arch/arm/boot/dts/rk3288-tinker.dts b/arch/arm/boot/dts/rk3288-tinker.dts
|
|
||||||
index 90c1a251..67a3ce6f 100644
|
|
||||||
--- a/arch/arm/boot/dts/rk3288-tinker.dts
|
|
||||||
+++ b/arch/arm/boot/dts/rk3288-tinker.dts
|
|
||||||
@@ -400,8 +400,31 @@
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
+&i2c1 {
|
|
||||||
+ status = "okay";
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
&i2c2 {
|
|
||||||
status = "okay";
|
|
||||||
+
|
|
||||||
+ afc0:af-controller@0 {
|
|
||||||
+ status = "okay";
|
|
||||||
+ compatible = "silicon touch,vm149C-v4l2-i2c-subdev";
|
|
||||||
+ reg = <0x0c>;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ eeprom:m24c08@50 {
|
|
||||||
+ compatible = "at,24c08";
|
|
||||||
+ reg = <0x50>;
|
|
||||||
+ };
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&i2c3 {
|
|
||||||
+ status = "okay";
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&i2c4 {
|
|
||||||
+ status = "okay";
|
|
||||||
};
|
|
||||||
|
|
||||||
&i2c5 {
|
|
||||||
--
|
|
||||||
2.11.0
|
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user