Compare commits
64 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
ac871938d3 | ||
|
ab63b19049 | ||
|
b6626c87f4 | ||
|
7b988dd8fc | ||
|
2a3a46103d | ||
|
1b64b89c2d | ||
|
6706eb16a4 | ||
|
359979e25b | ||
|
be009d9316 | ||
|
e06a81622d | ||
|
93f0ff8c4f | ||
|
18e07ba9f6 | ||
|
b27a96095d | ||
|
c1b0bbe361 | ||
|
cc4e21b64c | ||
|
1457c7c78e | ||
|
d98cfa77d6 | ||
|
c08df485fa | ||
|
89bd41507e | ||
|
9eb973e7d2 | ||
|
684d579249 | ||
|
e708510df1 | ||
|
37df227bc0 | ||
|
6487c37f16 | ||
|
33afbf3788 | ||
|
82d32758b4 | ||
|
b73fa7b980 | ||
|
ae47304273 | ||
|
a320cf868c | ||
|
c455dea8f2 | ||
|
319f8123df | ||
|
e63667d6b3 | ||
|
2bd8d4cdb4 | ||
|
e006fd5035 | ||
|
70da6a0757 | ||
|
e3985d3d2e | ||
|
dd361c8ed3 | ||
|
8cca325513 | ||
|
52be77ca6b | ||
|
6c925bc315 | ||
|
896c46870f | ||
|
c74ab1fc05 | ||
|
bff9338fe9 | ||
|
d6fc5ecb4b | ||
|
6209cab21a | ||
|
b6c02ba2ca | ||
|
d512ddd572 | ||
|
060f78f396 | ||
|
610279571c | ||
|
2abadc5169 | ||
|
f458c5418f | ||
|
3fb46c33cd | ||
|
422d33a878 | ||
|
eb1de640aa | ||
|
f9b692a09e | ||
|
53c3d27d79 | ||
|
82aabc8bb2 | ||
|
a05d9090bf | ||
|
65ed4db407 | ||
|
6be7eb2066 | ||
|
90614b00ce | ||
|
12eb6a489a | ||
|
74de6cf1a5 | ||
|
f5f44b6446 |
@ -1,29 +0,0 @@
|
|||||||
From 1849ef423238aeb1732eb3b8e67eb46bc21401c7 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Peter Robinson <pbrobinson@gmail.com>
|
|
||||||
Date: Thu, 10 Sep 2020 14:24:12 +0100
|
|
||||||
Subject: [PATCH] Fix BeagleAI detection
|
|
||||||
|
|
||||||
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
|
|
||||||
---
|
|
||||||
board/ti/am57xx/board.c | 4 +++-
|
|
||||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/board/ti/am57xx/board.c b/board/ti/am57xx/board.c
|
|
||||||
index 7809875510..3232812a97 100644
|
|
||||||
--- a/board/ti/am57xx/board.c
|
|
||||||
+++ b/board/ti/am57xx/board.c
|
|
||||||
@@ -527,8 +527,10 @@ void do_board_detect(void)
|
|
||||||
|
|
||||||
rc = ti_i2c_eeprom_am_get(CONFIG_EEPROM_BUS_ADDRESS,
|
|
||||||
CONFIG_EEPROM_CHIP_ADDRESS);
|
|
||||||
- if (rc)
|
|
||||||
+ if (rc) {
|
|
||||||
printf("ti_i2c_eeprom_init failed %d\n", rc);
|
|
||||||
+ ti_i2c_eeprom_am_set("BBONE-AI", "A");
|
|
||||||
+ }
|
|
||||||
|
|
||||||
#ifdef CONFIG_SUPPORT_EMMC_BOOT
|
|
||||||
rc = board_bootmode_has_emmc();
|
|
||||||
--
|
|
||||||
2.26.2
|
|
||||||
|
|
@ -1,518 +0,0 @@
|
|||||||
From 25ce28126444900b7b3efef36c6b9d15a6ab9af1 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Peter Robinson <pbrobinson@gmail.com>
|
|
||||||
Date: Wed, 28 Oct 2020 10:08:44 +0000
|
|
||||||
Subject: [PATCH] Fixes for AllWinner ethernet network interfaces
|
|
||||||
|
|
||||||
The upstream kernel in fixing stuff has broken stuff.
|
|
||||||
|
|
||||||
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
|
|
||||||
---
|
|
||||||
arch/arm/dts/sun50i-a64-bananapi-m64.dts | 2 +-
|
|
||||||
arch/arm/dts/sun50i-a64-nanopi-a64.dts | 2 +-
|
|
||||||
arch/arm/dts/sun50i-a64-oceanic-5205-5inmfd.dts | 2 +-
|
|
||||||
arch/arm/dts/sun50i-a64-olinuxino.dts | 2 +-
|
|
||||||
arch/arm/dts/sun50i-a64-orangepi-win.dts | 2 +-
|
|
||||||
arch/arm/dts/sun50i-a64-pine64-plus.dts | 2 +-
|
|
||||||
arch/arm/dts/sun50i-a64-sopine-baseboard.dts | 2 +-
|
|
||||||
arch/arm/dts/sun50i-h5-libretech-all-h5-cc.dts | 2 +-
|
|
||||||
arch/arm/dts/sun50i-h5-nanopi-neo-plus2.dts | 2 +-
|
|
||||||
arch/arm/dts/sun50i-h5-nanopi-neo2.dts | 2 +-
|
|
||||||
arch/arm/dts/sun50i-h5-orangepi-pc2.dts | 2 +-
|
|
||||||
arch/arm/dts/sun50i-h5-orangepi-prime.dts | 2 +-
|
|
||||||
arch/arm/dts/sun50i-h5-orangepi-zero-plus.dts | 2 +-
|
|
||||||
arch/arm/dts/sun50i-h6-beelink-gs1.dts | 2 +-
|
|
||||||
arch/arm/dts/sun50i-h6-pine-h64.dts | 2 +-
|
|
||||||
arch/arm/dts/sun7i-a20-bananapi-m1-plus.dts | 2 +-
|
|
||||||
arch/arm/dts/sun7i-a20-bananapi.dts | 2 +-
|
|
||||||
arch/arm/dts/sun7i-a20-bananapro.dts | 2 +-
|
|
||||||
arch/arm/dts/sun7i-a20-cubietruck.dts | 2 +-
|
|
||||||
arch/arm/dts/sun7i-a20-hummingbird.dts | 2 +-
|
|
||||||
arch/arm/dts/sun7i-a20-lamobo-r1.dts | 2 +-
|
|
||||||
arch/arm/dts/sun7i-a20-olimex-som-evb.dts | 2 +-
|
|
||||||
arch/arm/dts/sun7i-a20-olimex-som204-evb.dts | 2 +-
|
|
||||||
arch/arm/dts/sun7i-a20-olinuxino-lime2.dts | 2 +-
|
|
||||||
arch/arm/dts/sun7i-a20-orangepi-mini.dts | 2 +-
|
|
||||||
arch/arm/dts/sun7i-a20-orangepi.dts | 2 +-
|
|
||||||
arch/arm/dts/sun7i-a20-pcduino3-nano.dts | 2 +-
|
|
||||||
arch/arm/dts/sun7i-a20-wits-pro-a20-dkt.dts | 2 +-
|
|
||||||
arch/arm/dts/sun8i-a83t-bananapi-m3.dts | 2 +-
|
|
||||||
arch/arm/dts/sun8i-a83t-cubietruck-plus.dts | 2 +-
|
|
||||||
arch/arm/dts/sun8i-h3-nanopi-m1-plus.dts | 2 +-
|
|
||||||
arch/arm/dts/sun8i-h3-orangepi-plus.dts | 2 +-
|
|
||||||
arch/arm/dts/sun8i-h3-orangepi-plus2e.dts | 2 +-
|
|
||||||
arch/arm/dts/sun8i-r40-bananapi-m2-ultra.dts | 2 +-
|
|
||||||
arch/arm/dts/sun8i-v40-bananapi-m2-berry.dts | 2 +-
|
|
||||||
arch/arm/dts/sunxi-bananapi-m2-plus.dtsi | 2 +-
|
|
||||||
36 files changed, 36 insertions(+), 36 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/arch/arm/dts/sun50i-a64-bananapi-m64.dts b/arch/arm/dts/sun50i-a64-bananapi-m64.dts
|
|
||||||
index ef1c90401b..e1c22aeb29 100644
|
|
||||||
--- a/arch/arm/dts/sun50i-a64-bananapi-m64.dts
|
|
||||||
+++ b/arch/arm/dts/sun50i-a64-bananapi-m64.dts
|
|
||||||
@@ -112,7 +112,7 @@
|
|
||||||
&emac {
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&rgmii_pins>;
|
|
||||||
- phy-mode = "rgmii";
|
|
||||||
+ phy-mode = "rgmii-id";
|
|
||||||
phy-handle = <&ext_rgmii_phy>;
|
|
||||||
phy-supply = <®_dc1sw>;
|
|
||||||
status = "okay";
|
|
||||||
diff --git a/arch/arm/dts/sun50i-a64-nanopi-a64.dts b/arch/arm/dts/sun50i-a64-nanopi-a64.dts
|
|
||||||
index 31884dbc88..03ebe3e44b 100644
|
|
||||||
--- a/arch/arm/dts/sun50i-a64-nanopi-a64.dts
|
|
||||||
+++ b/arch/arm/dts/sun50i-a64-nanopi-a64.dts
|
|
||||||
@@ -102,7 +102,7 @@
|
|
||||||
&emac {
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&rgmii_pins>;
|
|
||||||
- phy-mode = "rgmii";
|
|
||||||
+ phy-mode = "rgmii-id";
|
|
||||||
phy-handle = <&ext_rgmii_phy>;
|
|
||||||
phy-supply = <®_dcdc1>;
|
|
||||||
status = "okay";
|
|
||||||
diff --git a/arch/arm/dts/sun50i-a64-oceanic-5205-5inmfd.dts b/arch/arm/dts/sun50i-a64-oceanic-5205-5inmfd.dts
|
|
||||||
index 6a2154525d..94caf110ab 100644
|
|
||||||
--- a/arch/arm/dts/sun50i-a64-oceanic-5205-5inmfd.dts
|
|
||||||
+++ b/arch/arm/dts/sun50i-a64-oceanic-5205-5inmfd.dts
|
|
||||||
@@ -30,7 +30,7 @@
|
|
||||||
&emac {
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&rgmii_pins>;
|
|
||||||
- phy-mode = "rgmii";
|
|
||||||
+ phy-mode = "rgmii-id";
|
|
||||||
phy-handle = <&ext_rgmii_phy>;
|
|
||||||
phy-supply = <®_dc1sw>;
|
|
||||||
allwinner,tx-delay-ps = <600>;
|
|
||||||
diff --git a/arch/arm/dts/sun50i-a64-olinuxino.dts b/arch/arm/dts/sun50i-a64-olinuxino.dts
|
|
||||||
index f7a4bccaa5..2396d9b797 100644
|
|
||||||
--- a/arch/arm/dts/sun50i-a64-olinuxino.dts
|
|
||||||
+++ b/arch/arm/dts/sun50i-a64-olinuxino.dts
|
|
||||||
@@ -102,7 +102,7 @@
|
|
||||||
&emac {
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&rgmii_pins>;
|
|
||||||
- phy-mode = "rgmii";
|
|
||||||
+ phy-mode = "rgmii-id";
|
|
||||||
phy-handle = <&ext_rgmii_phy>;
|
|
||||||
phy-supply = <®_dcdc1>;
|
|
||||||
allwinner,tx-delay-ps = <600>;
|
|
||||||
diff --git a/arch/arm/dts/sun50i-a64-orangepi-win.dts b/arch/arm/dts/sun50i-a64-orangepi-win.dts
|
|
||||||
index b0c64f7579..5b5d4f31b6 100644
|
|
||||||
--- a/arch/arm/dts/sun50i-a64-orangepi-win.dts
|
|
||||||
+++ b/arch/arm/dts/sun50i-a64-orangepi-win.dts
|
|
||||||
@@ -127,7 +127,7 @@
|
|
||||||
&emac {
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&rgmii_pins>;
|
|
||||||
- phy-mode = "rgmii";
|
|
||||||
+ phy-mode = "rgmii-id";
|
|
||||||
phy-handle = <&ext_rgmii_phy>;
|
|
||||||
phy-supply = <®_gmac_3v3>;
|
|
||||||
status = "okay";
|
|
||||||
diff --git a/arch/arm/dts/sun50i-a64-pine64-plus.dts b/arch/arm/dts/sun50i-a64-pine64-plus.dts
|
|
||||||
index 24f1aac366..b09b4276f1 100644
|
|
||||||
--- a/arch/arm/dts/sun50i-a64-pine64-plus.dts
|
|
||||||
+++ b/arch/arm/dts/sun50i-a64-pine64-plus.dts
|
|
||||||
@@ -52,7 +52,7 @@
|
|
||||||
&emac {
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&rgmii_pins>;
|
|
||||||
- phy-mode = "rgmii";
|
|
||||||
+ phy-mode = "rgmii-txid";
|
|
||||||
phy-handle = <&ext_rgmii_phy>;
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
diff --git a/arch/arm/dts/sun50i-a64-sopine-baseboard.dts b/arch/arm/dts/sun50i-a64-sopine-baseboard.dts
|
|
||||||
index 53fcc9098d..4a50a18128 100644
|
|
||||||
--- a/arch/arm/dts/sun50i-a64-sopine-baseboard.dts
|
|
||||||
+++ b/arch/arm/dts/sun50i-a64-sopine-baseboard.dts
|
|
||||||
@@ -95,7 +95,7 @@
|
|
||||||
&emac {
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&rgmii_pins>;
|
|
||||||
- phy-mode = "rgmii";
|
|
||||||
+ phy-mode = "rgmii-id";
|
|
||||||
phy-handle = <&ext_rgmii_phy>;
|
|
||||||
phy-supply = <®_dc1sw>;
|
|
||||||
status = "okay";
|
|
||||||
diff --git a/arch/arm/dts/sun50i-h5-libretech-all-h5-cc.dts b/arch/arm/dts/sun50i-h5-libretech-all-h5-cc.dts
|
|
||||||
index df1b9263ad..6e30a564c8 100644
|
|
||||||
--- a/arch/arm/dts/sun50i-h5-libretech-all-h5-cc.dts
|
|
||||||
+++ b/arch/arm/dts/sun50i-h5-libretech-all-h5-cc.dts
|
|
||||||
@@ -36,7 +36,7 @@
|
|
||||||
pinctrl-0 = <&emac_rgmii_pins>;
|
|
||||||
phy-supply = <®_gmac_3v3>;
|
|
||||||
phy-handle = <&ext_rgmii_phy>;
|
|
||||||
- phy-mode = "rgmii";
|
|
||||||
+ phy-mode = "rgmii-id";
|
|
||||||
/delete-property/ allwinner,leds-active-low;
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
diff --git a/arch/arm/dts/sun50i-h5-nanopi-neo-plus2.dts b/arch/arm/dts/sun50i-h5-nanopi-neo-plus2.dts
|
|
||||||
index 4f9ba53ffa..9d93fe1536 100644
|
|
||||||
--- a/arch/arm/dts/sun50i-h5-nanopi-neo-plus2.dts
|
|
||||||
+++ b/arch/arm/dts/sun50i-h5-nanopi-neo-plus2.dts
|
|
||||||
@@ -96,7 +96,7 @@
|
|
||||||
pinctrl-0 = <&emac_rgmii_pins>;
|
|
||||||
phy-supply = <®_gmac_3v3>;
|
|
||||||
phy-handle = <&ext_rgmii_phy>;
|
|
||||||
- phy-mode = "rgmii";
|
|
||||||
+ phy-mode = "rgmii-id";
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
|
|
||||||
diff --git a/arch/arm/dts/sun50i-h5-nanopi-neo2.dts b/arch/arm/dts/sun50i-h5-nanopi-neo2.dts
|
|
||||||
index b059e20813..e8ab8c2df5 100644
|
|
||||||
--- a/arch/arm/dts/sun50i-h5-nanopi-neo2.dts
|
|
||||||
+++ b/arch/arm/dts/sun50i-h5-nanopi-neo2.dts
|
|
||||||
@@ -75,7 +75,7 @@
|
|
||||||
pinctrl-0 = <&emac_rgmii_pins>;
|
|
||||||
phy-supply = <®_gmac_3v3>;
|
|
||||||
phy-handle = <&ext_rgmii_phy>;
|
|
||||||
- phy-mode = "rgmii";
|
|
||||||
+ phy-mode = "rgmii-id";
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
|
|
||||||
diff --git a/arch/arm/dts/sun50i-h5-orangepi-pc2.dts b/arch/arm/dts/sun50i-h5-orangepi-pc2.dts
|
|
||||||
index 70b5f09984..6cc567ea99 100644
|
|
||||||
--- a/arch/arm/dts/sun50i-h5-orangepi-pc2.dts
|
|
||||||
+++ b/arch/arm/dts/sun50i-h5-orangepi-pc2.dts
|
|
||||||
@@ -118,7 +118,7 @@
|
|
||||||
pinctrl-0 = <&emac_rgmii_pins>;
|
|
||||||
phy-supply = <®_gmac_3v3>;
|
|
||||||
phy-handle = <&ext_rgmii_phy>;
|
|
||||||
- phy-mode = "rgmii";
|
|
||||||
+ phy-mode = "rgmii-id";
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
|
|
||||||
diff --git a/arch/arm/dts/sun50i-h5-orangepi-prime.dts b/arch/arm/dts/sun50i-h5-orangepi-prime.dts
|
|
||||||
index cb44bfa598..33ab44072e 100644
|
|
||||||
--- a/arch/arm/dts/sun50i-h5-orangepi-prime.dts
|
|
||||||
+++ b/arch/arm/dts/sun50i-h5-orangepi-prime.dts
|
|
||||||
@@ -124,7 +124,7 @@
|
|
||||||
pinctrl-0 = <&emac_rgmii_pins>;
|
|
||||||
phy-supply = <®_gmac_3v3>;
|
|
||||||
phy-handle = <&ext_rgmii_phy>;
|
|
||||||
- phy-mode = "rgmii";
|
|
||||||
+ phy-mode = "rgmii-id";
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
|
|
||||||
diff --git a/arch/arm/dts/sun50i-h5-orangepi-zero-plus.dts b/arch/arm/dts/sun50i-h5-orangepi-zero-plus.dts
|
|
||||||
index ef5ca64442..de448ca51e 100644
|
|
||||||
--- a/arch/arm/dts/sun50i-h5-orangepi-zero-plus.dts
|
|
||||||
+++ b/arch/arm/dts/sun50i-h5-orangepi-zero-plus.dts
|
|
||||||
@@ -69,7 +69,7 @@
|
|
||||||
pinctrl-0 = <&emac_rgmii_pins>;
|
|
||||||
phy-supply = <®_gmac_3v3>;
|
|
||||||
phy-handle = <&ext_rgmii_phy>;
|
|
||||||
- phy-mode = "rgmii";
|
|
||||||
+ phy-mode = "rgmii-id";
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
|
|
||||||
diff --git a/arch/arm/dts/sun50i-h6-beelink-gs1.dts b/arch/arm/dts/sun50i-h6-beelink-gs1.dts
|
|
||||||
index 0dc33c90dd..024035d36e 100644
|
|
||||||
--- a/arch/arm/dts/sun50i-h6-beelink-gs1.dts
|
|
||||||
+++ b/arch/arm/dts/sun50i-h6-beelink-gs1.dts
|
|
||||||
@@ -64,7 +64,7 @@
|
|
||||||
&emac {
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&ext_rgmii_pins>;
|
|
||||||
- phy-mode = "rgmii";
|
|
||||||
+ phy-mode = "rgmii-id";
|
|
||||||
phy-handle = <&ext_rgmii_phy>;
|
|
||||||
phy-supply = <®_aldo2>;
|
|
||||||
status = "okay";
|
|
||||||
diff --git a/arch/arm/dts/sun50i-h6-pine-h64.dts b/arch/arm/dts/sun50i-h6-pine-h64.dts
|
|
||||||
index 1898345183..13fbf26817 100644
|
|
||||||
--- a/arch/arm/dts/sun50i-h6-pine-h64.dts
|
|
||||||
+++ b/arch/arm/dts/sun50i-h6-pine-h64.dts
|
|
||||||
@@ -66,7 +66,7 @@
|
|
||||||
&emac {
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&ext_rgmii_pins>;
|
|
||||||
- phy-mode = "rgmii";
|
|
||||||
+ phy-mode = "rgmii-id";
|
|
||||||
phy-handle = <&ext_rgmii_phy>;
|
|
||||||
phy-supply = <®_aldo2>;
|
|
||||||
allwinner,rx-delay-ps = <200>;
|
|
||||||
diff --git a/arch/arm/dts/sun7i-a20-bananapi-m1-plus.dts b/arch/arm/dts/sun7i-a20-bananapi-m1-plus.dts
|
|
||||||
index e2bfe00588..4dbcad1343 100644
|
|
||||||
--- a/arch/arm/dts/sun7i-a20-bananapi-m1-plus.dts
|
|
||||||
+++ b/arch/arm/dts/sun7i-a20-bananapi-m1-plus.dts
|
|
||||||
@@ -130,7 +130,7 @@
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&gmac_rgmii_pins>;
|
|
||||||
phy = <&phy1>;
|
|
||||||
- phy-mode = "rgmii";
|
|
||||||
+ phy-mode = "rgmii-id";
|
|
||||||
phy-supply = <®_gmac_3v3>;
|
|
||||||
status = "okay";
|
|
||||||
|
|
||||||
diff --git a/arch/arm/dts/sun7i-a20-bananapi.dts b/arch/arm/dts/sun7i-a20-bananapi.dts
|
|
||||||
index 81bc85d398..33040c43bc 100644
|
|
||||||
--- a/arch/arm/dts/sun7i-a20-bananapi.dts
|
|
||||||
+++ b/arch/arm/dts/sun7i-a20-bananapi.dts
|
|
||||||
@@ -132,7 +132,7 @@
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&gmac_rgmii_pins>;
|
|
||||||
phy = <&phy1>;
|
|
||||||
- phy-mode = "rgmii";
|
|
||||||
+ phy-mode = "rgmii-id";
|
|
||||||
phy-supply = <®_gmac_3v3>;
|
|
||||||
status = "okay";
|
|
||||||
|
|
||||||
diff --git a/arch/arm/dts/sun7i-a20-bananapro.dts b/arch/arm/dts/sun7i-a20-bananapro.dts
|
|
||||||
index 0176e9de01..8a75545e22 100644
|
|
||||||
--- a/arch/arm/dts/sun7i-a20-bananapro.dts
|
|
||||||
+++ b/arch/arm/dts/sun7i-a20-bananapro.dts
|
|
||||||
@@ -110,7 +110,7 @@
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&gmac_rgmii_pins>;
|
|
||||||
phy = <&phy1>;
|
|
||||||
- phy-mode = "rgmii";
|
|
||||||
+ phy-mode = "rgmii-id";
|
|
||||||
phy-supply = <®_gmac_3v3>;
|
|
||||||
status = "okay";
|
|
||||||
|
|
||||||
diff --git a/arch/arm/dts/sun7i-a20-cubietruck.dts b/arch/arm/dts/sun7i-a20-cubietruck.dts
|
|
||||||
index 99f531b8d2..46a9f4669e 100644
|
|
||||||
--- a/arch/arm/dts/sun7i-a20-cubietruck.dts
|
|
||||||
+++ b/arch/arm/dts/sun7i-a20-cubietruck.dts
|
|
||||||
@@ -151,7 +151,7 @@
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&gmac_rgmii_pins>;
|
|
||||||
phy = <&phy1>;
|
|
||||||
- phy-mode = "rgmii";
|
|
||||||
+ phy-mode = "rgmii-id";
|
|
||||||
status = "okay";
|
|
||||||
|
|
||||||
phy1: ethernet-phy@1 {
|
|
||||||
diff --git a/arch/arm/dts/sun7i-a20-hummingbird.dts b/arch/arm/dts/sun7i-a20-hummingbird.dts
|
|
||||||
index fd0153f656..5c3d107094 100644
|
|
||||||
--- a/arch/arm/dts/sun7i-a20-hummingbird.dts
|
|
||||||
+++ b/arch/arm/dts/sun7i-a20-hummingbird.dts
|
|
||||||
@@ -101,7 +101,7 @@
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&gmac_rgmii_pins>;
|
|
||||||
phy = <&phy1>;
|
|
||||||
- phy-mode = "rgmii";
|
|
||||||
+ phy-mode = "rgmii-id";
|
|
||||||
phy-supply = <®_gmac_vdd>;
|
|
||||||
/* phy reset config */
|
|
||||||
snps,reset-gpio = <&pio 0 17 GPIO_ACTIVE_HIGH>; /* PA17 */
|
|
||||||
diff --git a/arch/arm/dts/sun7i-a20-lamobo-r1.dts b/arch/arm/dts/sun7i-a20-lamobo-r1.dts
|
|
||||||
index f91e1bee44..8173d77c12 100644
|
|
||||||
--- a/arch/arm/dts/sun7i-a20-lamobo-r1.dts
|
|
||||||
+++ b/arch/arm/dts/sun7i-a20-lamobo-r1.dts
|
|
||||||
@@ -120,7 +120,7 @@
|
|
||||||
&gmac {
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&gmac_rgmii_pins>;
|
|
||||||
- phy-mode = "rgmii";
|
|
||||||
+ phy-mode = "rgmii-id";
|
|
||||||
phy-supply = <®_gmac_3v3>;
|
|
||||||
status = "okay";
|
|
||||||
/delete-property/#address-cells;
|
|
||||||
diff --git a/arch/arm/dts/sun7i-a20-olimex-som-evb.dts b/arch/arm/dts/sun7i-a20-olimex-som-evb.dts
|
|
||||||
index f0e6a96e57..f0c5160ff8 100644
|
|
||||||
--- a/arch/arm/dts/sun7i-a20-olimex-som-evb.dts
|
|
||||||
+++ b/arch/arm/dts/sun7i-a20-olimex-som-evb.dts
|
|
||||||
@@ -112,7 +112,7 @@
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&gmac_rgmii_pins>;
|
|
||||||
phy = <&phy1>;
|
|
||||||
- phy-mode = "rgmii";
|
|
||||||
+ phy-mode = "rgmii-id";
|
|
||||||
status = "okay";
|
|
||||||
|
|
||||||
phy1: ethernet-phy@1 {
|
|
||||||
diff --git a/arch/arm/dts/sun7i-a20-olimex-som204-evb.dts b/arch/arm/dts/sun7i-a20-olimex-som204-evb.dts
|
|
||||||
index 823aabce04..ff42708137 100644
|
|
||||||
--- a/arch/arm/dts/sun7i-a20-olimex-som204-evb.dts
|
|
||||||
+++ b/arch/arm/dts/sun7i-a20-olimex-som204-evb.dts
|
|
||||||
@@ -106,7 +106,7 @@
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&gmac_rgmii_pins>;
|
|
||||||
phy = <&phy3>;
|
|
||||||
- phy-mode = "rgmii";
|
|
||||||
+ phy-mode = "rgmii-id";
|
|
||||||
phy-supply = <®_vcc3v3>;
|
|
||||||
|
|
||||||
snps,reset-gpio = <&pio 0 17 GPIO_ACTIVE_HIGH>;
|
|
||||||
diff --git a/arch/arm/dts/sun7i-a20-olinuxino-lime2.dts b/arch/arm/dts/sun7i-a20-olinuxino-lime2.dts
|
|
||||||
index 4e1c590eb0..996201665b 100644
|
|
||||||
--- a/arch/arm/dts/sun7i-a20-olinuxino-lime2.dts
|
|
||||||
+++ b/arch/arm/dts/sun7i-a20-olinuxino-lime2.dts
|
|
||||||
@@ -112,7 +112,7 @@
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&gmac_rgmii_pins>;
|
|
||||||
phy = <&phy1>;
|
|
||||||
- phy-mode = "rgmii";
|
|
||||||
+ phy-mode = "rgmii-id";
|
|
||||||
status = "okay";
|
|
||||||
|
|
||||||
phy1: ethernet-phy@1 {
|
|
||||||
diff --git a/arch/arm/dts/sun7i-a20-orangepi-mini.dts b/arch/arm/dts/sun7i-a20-orangepi-mini.dts
|
|
||||||
index 15881081ca..b80215c61c 100644
|
|
||||||
--- a/arch/arm/dts/sun7i-a20-orangepi-mini.dts
|
|
||||||
+++ b/arch/arm/dts/sun7i-a20-orangepi-mini.dts
|
|
||||||
@@ -121,7 +121,7 @@
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&gmac_rgmii_pins>;
|
|
||||||
phy = <&phy1>;
|
|
||||||
- phy-mode = "rgmii";
|
|
||||||
+ phy-mode = "rgmii-id";
|
|
||||||
phy-supply = <®_gmac_3v3>;
|
|
||||||
status = "okay";
|
|
||||||
|
|
||||||
diff --git a/arch/arm/dts/sun7i-a20-orangepi.dts b/arch/arm/dts/sun7i-a20-orangepi.dts
|
|
||||||
index d64de2e73a..66efb7d1ab 100644
|
|
||||||
--- a/arch/arm/dts/sun7i-a20-orangepi.dts
|
|
||||||
+++ b/arch/arm/dts/sun7i-a20-orangepi.dts
|
|
||||||
@@ -97,7 +97,7 @@
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&gmac_rgmii_pins>;
|
|
||||||
phy = <&phy1>;
|
|
||||||
- phy-mode = "rgmii";
|
|
||||||
+ phy-mode = "rgmii-id";
|
|
||||||
phy-supply = <®_gmac_3v3>;
|
|
||||||
status = "okay";
|
|
||||||
|
|
||||||
diff --git a/arch/arm/dts/sun7i-a20-pcduino3-nano.dts b/arch/arm/dts/sun7i-a20-pcduino3-nano.dts
|
|
||||||
index 538ea15fa3..205eaae44a 100644
|
|
||||||
--- a/arch/arm/dts/sun7i-a20-pcduino3-nano.dts
|
|
||||||
+++ b/arch/arm/dts/sun7i-a20-pcduino3-nano.dts
|
|
||||||
@@ -115,7 +115,7 @@
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&gmac_rgmii_pins>;
|
|
||||||
phy = <&phy1>;
|
|
||||||
- phy-mode = "rgmii";
|
|
||||||
+ phy-mode = "rgmii-id";
|
|
||||||
status = "okay";
|
|
||||||
|
|
||||||
phy1: ethernet-phy@1 {
|
|
||||||
diff --git a/arch/arm/dts/sun7i-a20-wits-pro-a20-dkt.dts b/arch/arm/dts/sun7i-a20-wits-pro-a20-dkt.dts
|
|
||||||
index c27e56091f..56cc5791c4 100644
|
|
||||||
--- a/arch/arm/dts/sun7i-a20-wits-pro-a20-dkt.dts
|
|
||||||
+++ b/arch/arm/dts/sun7i-a20-wits-pro-a20-dkt.dts
|
|
||||||
@@ -82,7 +82,7 @@
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&gmac_rgmii_pins>;
|
|
||||||
phy = <&phy1>;
|
|
||||||
- phy-mode = "rgmii";
|
|
||||||
+ phy-mode = "rgmii-id";
|
|
||||||
status = "okay";
|
|
||||||
|
|
||||||
phy1: ethernet-phy@1 {
|
|
||||||
diff --git a/arch/arm/dts/sun8i-a83t-bananapi-m3.dts b/arch/arm/dts/sun8i-a83t-bananapi-m3.dts
|
|
||||||
index eaff6fa401..2beafe3a31 100644
|
|
||||||
--- a/arch/arm/dts/sun8i-a83t-bananapi-m3.dts
|
|
||||||
+++ b/arch/arm/dts/sun8i-a83t-bananapi-m3.dts
|
|
||||||
@@ -123,7 +123,7 @@
|
|
||||||
pinctrl-0 = <&emac_rgmii_pins>;
|
|
||||||
phy-supply = <®_sw>;
|
|
||||||
phy-handle = <&rgmii_phy>;
|
|
||||||
- phy-mode = "rgmii";
|
|
||||||
+ phy-mode = "rgmii-id";
|
|
||||||
allwinner,rx-delay-ps = <700>;
|
|
||||||
allwinner,tx-delay-ps = <700>;
|
|
||||||
status = "okay";
|
|
||||||
diff --git a/arch/arm/dts/sun8i-a83t-cubietruck-plus.dts b/arch/arm/dts/sun8i-a83t-cubietruck-plus.dts
|
|
||||||
index 5dba4fc310..ecd9ff38a8 100644
|
|
||||||
--- a/arch/arm/dts/sun8i-a83t-cubietruck-plus.dts
|
|
||||||
+++ b/arch/arm/dts/sun8i-a83t-cubietruck-plus.dts
|
|
||||||
@@ -160,7 +160,7 @@
|
|
||||||
pinctrl-0 = <&emac_rgmii_pins>;
|
|
||||||
phy-supply = <®_dldo4>;
|
|
||||||
phy-handle = <&rgmii_phy>;
|
|
||||||
- phy-mode = "rgmii";
|
|
||||||
+ phy-mode = "rgmii-id";
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
|
|
||||||
diff --git a/arch/arm/dts/sun8i-h3-nanopi-m1-plus.dts b/arch/arm/dts/sun8i-h3-nanopi-m1-plus.dts
|
|
||||||
index 4ba533b034..bc370d4ea1 100644
|
|
||||||
--- a/arch/arm/dts/sun8i-h3-nanopi-m1-plus.dts
|
|
||||||
+++ b/arch/arm/dts/sun8i-h3-nanopi-m1-plus.dts
|
|
||||||
@@ -96,7 +96,7 @@
|
|
||||||
pinctrl-0 = <&emac_rgmii_pins>;
|
|
||||||
phy-supply = <®_gmac_3v3>;
|
|
||||||
phy-handle = <&ext_rgmii_phy>;
|
|
||||||
- phy-mode = "rgmii";
|
|
||||||
+ phy-mode = "rgmii-id";
|
|
||||||
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
diff --git a/arch/arm/dts/sun8i-h3-orangepi-plus.dts b/arch/arm/dts/sun8i-h3-orangepi-plus.dts
|
|
||||||
index 97f497854e..d05fa679dc 100644
|
|
||||||
--- a/arch/arm/dts/sun8i-h3-orangepi-plus.dts
|
|
||||||
+++ b/arch/arm/dts/sun8i-h3-orangepi-plus.dts
|
|
||||||
@@ -85,7 +85,7 @@
|
|
||||||
pinctrl-0 = <&emac_rgmii_pins>;
|
|
||||||
phy-supply = <®_gmac_3v3>;
|
|
||||||
phy-handle = <&ext_rgmii_phy>;
|
|
||||||
- phy-mode = "rgmii";
|
|
||||||
+ phy-mode = "rgmii-id";
|
|
||||||
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
diff --git a/arch/arm/dts/sun8i-h3-orangepi-plus2e.dts b/arch/arm/dts/sun8i-h3-orangepi-plus2e.dts
|
|
||||||
index 6dbf7b2e0c..b6ca45d18e 100644
|
|
||||||
--- a/arch/arm/dts/sun8i-h3-orangepi-plus2e.dts
|
|
||||||
+++ b/arch/arm/dts/sun8i-h3-orangepi-plus2e.dts
|
|
||||||
@@ -67,7 +67,7 @@
|
|
||||||
pinctrl-0 = <&emac_rgmii_pins>;
|
|
||||||
phy-supply = <®_gmac_3v3>;
|
|
||||||
phy-handle = <&ext_rgmii_phy>;
|
|
||||||
- phy-mode = "rgmii";
|
|
||||||
+ phy-mode = "rgmii-id";
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
|
|
||||||
diff --git a/arch/arm/dts/sun8i-r40-bananapi-m2-ultra.dts b/arch/arm/dts/sun8i-r40-bananapi-m2-ultra.dts
|
|
||||||
index c488aaacbd..9c20245eef 100644
|
|
||||||
--- a/arch/arm/dts/sun8i-r40-bananapi-m2-ultra.dts
|
|
||||||
+++ b/arch/arm/dts/sun8i-r40-bananapi-m2-ultra.dts
|
|
||||||
@@ -129,7 +129,7 @@
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&gmac_rgmii_pins>;
|
|
||||||
phy-handle = <&phy1>;
|
|
||||||
- phy-mode = "rgmii";
|
|
||||||
+ phy-mode = "rgmii-id";
|
|
||||||
phy-supply = <®_dc1sw>;
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
diff --git a/arch/arm/dts/sun8i-v40-bananapi-m2-berry.dts b/arch/arm/dts/sun8i-v40-bananapi-m2-berry.dts
|
|
||||||
index 15c22b06fc..3ab6f47cea 100644
|
|
||||||
--- a/arch/arm/dts/sun8i-v40-bananapi-m2-berry.dts
|
|
||||||
+++ b/arch/arm/dts/sun8i-v40-bananapi-m2-berry.dts
|
|
||||||
@@ -120,7 +120,7 @@
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&gmac_rgmii_pins>;
|
|
||||||
phy-handle = <&phy1>;
|
|
||||||
- phy-mode = "rgmii";
|
|
||||||
+ phy-mode = "rgmii-id";
|
|
||||||
phy-supply = <®_dc1sw>;
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
diff --git a/arch/arm/dts/sunxi-bananapi-m2-plus.dtsi b/arch/arm/dts/sunxi-bananapi-m2-plus.dtsi
|
|
||||||
index 39263e74fb..8e5cb3b3fd 100644
|
|
||||||
--- a/arch/arm/dts/sunxi-bananapi-m2-plus.dtsi
|
|
||||||
+++ b/arch/arm/dts/sunxi-bananapi-m2-plus.dtsi
|
|
||||||
@@ -126,7 +126,7 @@
|
|
||||||
pinctrl-0 = <&emac_rgmii_pins>;
|
|
||||||
phy-supply = <®_gmac_3v3>;
|
|
||||||
phy-handle = <&ext_rgmii_phy>;
|
|
||||||
- phy-mode = "rgmii";
|
|
||||||
+ phy-mode = "rgmii-id";
|
|
||||||
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
--
|
|
||||||
2.28.0
|
|
||||||
|
|
@ -1,45 +0,0 @@
|
|||||||
From 6bf15552c2b6becb48ce7732120e0ddb2078cb1a Mon Sep 17 00:00:00 2001
|
|
||||||
From: Peter Robinson <pbrobinson@gmail.com>
|
|
||||||
Date: Tue, 14 Apr 2020 09:53:07 +0100
|
|
||||||
Subject: [PATCH 9/9] initial pinetab support
|
|
||||||
|
|
||||||
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
|
|
||||||
---
|
|
||||||
configs/pinetab_defconfig | 26 ++++++++++++++++++++++++++
|
|
||||||
1 file changed, 26 insertions(+)
|
|
||||||
create mode 100644 configs/pinetab_defconfig
|
|
||||||
|
|
||||||
diff --git a/configs/pinetab_defconfig b/configs/pinetab_defconfig
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000000..5b9620f3e5
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/configs/pinetab_defconfig
|
|
||||||
@@ -0,0 +1,26 @@
|
|
||||||
+CONFIG_ARM=y
|
|
||||||
+CONFIG_ARCH_SUNXI=y
|
|
||||||
+CONFIG_SPL=y
|
|
||||||
+CONFIG_MACH_SUN50I=y
|
|
||||||
+CONFIG_SUNXI_DRAM_LPDDR3_STOCK=y
|
|
||||||
+CONFIG_DRAM_CLK=552
|
|
||||||
+CONFIG_DRAM_ZQ=3881949
|
|
||||||
+CONFIG_MMC_SUNXI_SLOT_EXTRA=2
|
|
||||||
+CONFIG_R_I2C_ENABLE=y
|
|
||||||
+CONFIG_SPL_SPI_SUNXI=y
|
|
||||||
+# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
|
|
||||||
+CONFIG_USE_PREBOOT=y
|
|
||||||
+# CONFIG_SPL_DOS_PARTITION is not set
|
|
||||||
+# CONFIG_SPL_EFI_PARTITION is not set
|
|
||||||
+CONFIG_DEFAULT_DEVICE_TREE="sun50i-a64-pinetab"
|
|
||||||
+CONFIG_OF_LIST="sun50i-a64-pinetab"
|
|
||||||
+CONFIG_SYS_RELOC_GD_ENV_ADDR=y
|
|
||||||
+CONFIG_DM_REGULATOR=y
|
|
||||||
+CONFIG_DM_REGULATOR_FIXED=y
|
|
||||||
+CONFIG_DM_PWM=y
|
|
||||||
+CONFIG_PWM_SUNXI=y
|
|
||||||
+CONFIG_LED=y
|
|
||||||
+CONFIG_LED_GPIO=y
|
|
||||||
+CONFIG_USB_EHCI_HCD=y
|
|
||||||
+CONFIG_USB_OHCI_HCD=y
|
|
||||||
+CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE=y
|
|
||||||
--
|
|
||||||
2.26.0
|
|
43
CVE-2022-30767.patch
Normal file
43
CVE-2022-30767.patch
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
From bdbf7a05e26f3c5fd437c99e2755ffde186ddc80 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andrea zi0Black Cappa <zi0Black@protonmail.com>
|
||||||
|
Date: Wed, 18 May 2022 16:30:08 +0000
|
||||||
|
Subject: [PATCH] net: nfs: Fix CVE-2022-30767 (old CVE-2019-14196)
|
||||||
|
|
||||||
|
This patch mitigates the vulnerability identified via CVE-2019-14196.
|
||||||
|
|
||||||
|
The previous patch was bypassed/ineffective, and now the vulnerability
|
||||||
|
is identified via CVE-2022-30767. The patch removes the sanity check
|
||||||
|
introduced to mitigate CVE-2019-14196 since it's ineffective.
|
||||||
|
filefh3_length is changed to unsigned type integer, preventing negative
|
||||||
|
numbers from being used during comparison with positive values during
|
||||||
|
size sanity checks.
|
||||||
|
|
||||||
|
Signed-off-by: Andrea zi0Black Cappa <zi0Black@protonmail.com>
|
||||||
|
---
|
||||||
|
net/nfs.c | 4 +---
|
||||||
|
1 file changed, 1 insertion(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/net/nfs.c b/net/nfs.c
|
||||||
|
index 3c01cebd96..9152ab742e 100644
|
||||||
|
--- a/net/nfs.c
|
||||||
|
+++ b/net/nfs.c
|
||||||
|
@@ -52,7 +52,7 @@ static const ulong nfs_timeout = CONFIG_NFS_TIMEOUT;
|
||||||
|
|
||||||
|
static char dirfh[NFS_FHSIZE]; /* NFSv2 / NFSv3 file handle of directory */
|
||||||
|
static char filefh[NFS3_FHSIZE]; /* NFSv2 / NFSv3 file handle */
|
||||||
|
-static int filefh3_length; /* (variable) length of filefh when NFSv3 */
|
||||||
|
+static unsigned int filefh3_length; /* (variable) length of filefh when NFSv3 */
|
||||||
|
|
||||||
|
static enum net_loop_state nfs_download_state;
|
||||||
|
static struct in_addr nfs_server_ip;
|
||||||
|
@@ -573,8 +573,6 @@ static int nfs_lookup_reply(uchar *pkt, unsigned len)
|
||||||
|
filefh3_length = ntohl(rpc_pkt.u.reply.data[1]);
|
||||||
|
if (filefh3_length > NFS3_FHSIZE)
|
||||||
|
filefh3_length = NFS3_FHSIZE;
|
||||||
|
- if (((uchar *)&(rpc_pkt.u.reply.data[0]) - (uchar *)(&rpc_pkt) + filefh3_length) > len)
|
||||||
|
- return -NFS_RPC_DROP;
|
||||||
|
memcpy(filefh, rpc_pkt.u.reply.data + 2, filefh3_length);
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
GitLab
|
File diff suppressed because it is too large
Load Diff
@ -1,10 +1,11 @@
|
|||||||
a64-olinuxino
|
a64-olinuxino
|
||||||
amarula_a64_relic
|
amarula_a64_relic
|
||||||
|
apple_m1
|
||||||
bananapi_m2_plus_h5
|
bananapi_m2_plus_h5
|
||||||
bananapi_m64
|
bananapi_m64
|
||||||
|
beelink_gs1
|
||||||
dragonboard410c
|
dragonboard410c
|
||||||
dragonboard820c
|
dragonboard820c
|
||||||
espresso7420
|
|
||||||
evb-rk3328
|
evb-rk3328
|
||||||
evb-rk3399
|
evb-rk3399
|
||||||
ficus-rk3399
|
ficus-rk3399
|
||||||
@ -12,12 +13,13 @@ firefly-rk3399
|
|||||||
geekbox
|
geekbox
|
||||||
hikey
|
hikey
|
||||||
khadas-edge-captain-rk3399
|
khadas-edge-captain-rk3399
|
||||||
khadas-edge-v-rk3399
|
|
||||||
khadas-edge-rk3399
|
khadas-edge-rk3399
|
||||||
|
khadas-edge-v-rk3399
|
||||||
khadas-vim
|
khadas-vim
|
||||||
khadas-vim2
|
khadas-vim2
|
||||||
khadas-vim3
|
khadas-vim3
|
||||||
khadas-vim3l
|
khadas-vim3l
|
||||||
|
leez-rk3399
|
||||||
libretech-ac
|
libretech-ac
|
||||||
libretech_all_h3_cc_h5
|
libretech_all_h3_cc_h5
|
||||||
libretech_all_h3_it_h5
|
libretech_all_h3_it_h5
|
||||||
@ -28,18 +30,24 @@ mvebu_mcbin-88f8040
|
|||||||
nanopc-t4-rk3399
|
nanopc-t4-rk3399
|
||||||
nanopi_a64
|
nanopi_a64
|
||||||
nanopi-k2
|
nanopi-k2
|
||||||
nanopi-m4-rk3399
|
|
||||||
nanopi-m4-2gb-rk3399
|
nanopi-m4-2gb-rk3399
|
||||||
|
nanopi-m4b-rk3399
|
||||||
|
nanopi-m4-rk3399
|
||||||
nanopi_neo2
|
nanopi_neo2
|
||||||
nanopi-neo4-rk3399
|
nanopi-neo4-rk3399
|
||||||
nanopi_neo_plus2
|
nanopi_neo_plus2
|
||||||
|
nanopi_r1s_h5
|
||||||
|
nanopi-r2s-rk3328
|
||||||
|
nanopi-r4s-rk3399
|
||||||
odroid-c2
|
odroid-c2
|
||||||
|
orangepi_3
|
||||||
orangepi_lite2
|
orangepi_lite2
|
||||||
orangepi_one_plus
|
orangepi_one_plus
|
||||||
orangepi_pc2
|
orangepi_pc2
|
||||||
orangepi_prime
|
orangepi_prime
|
||||||
orangepi-rk3399
|
orangepi-rk3399
|
||||||
orangepi_win
|
orangepi_win
|
||||||
|
orangepi_zero2
|
||||||
orangepi_zero_plus
|
orangepi_zero_plus
|
||||||
orangepi_zero_plus2
|
orangepi_zero_plus2
|
||||||
p212
|
p212
|
||||||
@ -50,25 +58,28 @@ pine64-lts
|
|||||||
pine64_plus
|
pine64_plus
|
||||||
pinebook
|
pinebook
|
||||||
pinebook-pro-rk3399
|
pinebook-pro-rk3399
|
||||||
|
pinephone-pro-rk3399
|
||||||
|
pine_h64
|
||||||
pinephone
|
pinephone
|
||||||
pinetab
|
pinetab
|
||||||
pine_h64
|
|
||||||
poplar
|
poplar
|
||||||
puma-rk3399
|
puma-rk3399
|
||||||
|
roc-cc-rk3328
|
||||||
rock64-rk3328
|
rock64-rk3328
|
||||||
rock960-rk3399
|
rock960-rk3399
|
||||||
rock-pi-4-rk3399
|
|
||||||
rock-pi-4c-rk3399
|
rock-pi-4c-rk3399
|
||||||
|
rock-pi-4-rk3399
|
||||||
rock-pi-e-rk3328
|
rock-pi-e-rk3328
|
||||||
rock-pi-n10-rk3399pro
|
rock-pi-n10-rk3399pro
|
||||||
rockpro64-rk3399
|
rockpro64-rk3399
|
||||||
roc-cc-rk3328
|
|
||||||
roc-pc-rk3399
|
|
||||||
roc-pc-mezzanine-rk3399
|
roc-pc-mezzanine-rk3399
|
||||||
|
roc-pc-rk3399
|
||||||
rpi_3
|
rpi_3
|
||||||
rpi_4
|
rpi_4
|
||||||
rpi_arm64
|
rpi_arm64
|
||||||
|
starqltechn
|
||||||
sopine_baseboard
|
sopine_baseboard
|
||||||
|
tanix_tx6
|
||||||
teres_i
|
teres_i
|
||||||
turris_mox
|
turris_mox
|
||||||
vexpress_aemv8a_juno
|
vexpress_aemv8a_juno
|
||||||
|
10
arm-boards
10
arm-boards
@ -57,7 +57,6 @@ inet_q972
|
|||||||
Itead_Ibox_A20
|
Itead_Ibox_A20
|
||||||
jesurun_q5
|
jesurun_q5
|
||||||
jetson-tk1
|
jetson-tk1
|
||||||
kc1
|
|
||||||
Lamobo_R1
|
Lamobo_R1
|
||||||
libretech_all_h3_cc_h2_plus
|
libretech_all_h3_cc_h2_plus
|
||||||
Linksprite_pcDuino
|
Linksprite_pcDuino
|
||||||
@ -113,8 +112,8 @@ qemu_arm
|
|||||||
r7-tv-dongle
|
r7-tv-dongle
|
||||||
riotboard
|
riotboard
|
||||||
rock
|
rock
|
||||||
rock-pi-n8-rk3288
|
|
||||||
rock2
|
rock2
|
||||||
|
rock-pi-n8-rk3288
|
||||||
rpi_2
|
rpi_2
|
||||||
rpi_3_32b
|
rpi_3_32b
|
||||||
rpi_4_32b
|
rpi_4_32b
|
||||||
@ -128,16 +127,15 @@ tbs_a711
|
|||||||
tinker-rk3288
|
tinker-rk3288
|
||||||
tinker-s-rk3288
|
tinker-s-rk3288
|
||||||
trimslice
|
trimslice
|
||||||
|
turris_omnia
|
||||||
udoo
|
udoo
|
||||||
udoo_neo
|
udoo_neo
|
||||||
usbarmory
|
usbarmory
|
||||||
UTOO_P66
|
UTOO_P66
|
||||||
vexpress_ca15_tc2
|
|
||||||
vexpress_ca9x4
|
|
||||||
wandboard
|
wandboard
|
||||||
warp
|
|
||||||
warp7
|
warp7
|
||||||
Wexler_TAB7200
|
Wexler_TAB7200
|
||||||
Wits_Pro_A20_DKT
|
Wits_Pro_A20_DKT
|
||||||
Yones_Toptech_BS1078_V2
|
|
||||||
xilinx_zynq_virt
|
xilinx_zynq_virt
|
||||||
|
Yones_Toptech_BS1078_V2
|
||||||
|
zeropi
|
||||||
|
@ -1,8 +0,0 @@
|
|||||||
chromebit_mickey_defconfig
|
|
||||||
chromebook_jerry_defconfig
|
|
||||||
chromebook_minnie_defconfig
|
|
||||||
nyan-big_defconfig
|
|
||||||
peach-pi_defconfig
|
|
||||||
peach-pit_defconfig
|
|
||||||
snow_defconfig
|
|
||||||
spring_defconfig
|
|
@ -1,135 +0,0 @@
|
|||||||
From 5cb3ca7ebd46c1983d0929b5ba027a03c1f5e51e Mon Sep 17 00:00:00 2001
|
|
||||||
From: Peter Robinson <pbrobinson@gmail.com>
|
|
||||||
Date: Wed, 16 Dec 2020 15:22:34 +0000
|
|
||||||
Subject: [PATCH 1/2] arm: dts: rockchip: rk3399: enable rng at the SoC level
|
|
||||||
|
|
||||||
The rng is embedded in the SoC so enable it in the device tree
|
|
||||||
universally, the use of it can be controlled by enabling/disabling
|
|
||||||
at the device config level.
|
|
||||||
|
|
||||||
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
|
|
||||||
---
|
|
||||||
arch/arm/dts/rk3399-evb-u-boot.dtsi | 4 ----
|
|
||||||
arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi | 4 ----
|
|
||||||
arch/arm/dts/rk3399-rockpro64-u-boot.dtsi | 4 ----
|
|
||||||
arch/arm/dts/rk3399-u-boot.dtsi | 2 +-
|
|
||||||
4 files changed, 1 insertion(+), 13 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/arch/arm/dts/rk3399-evb-u-boot.dtsi b/arch/arm/dts/rk3399-evb-u-boot.dtsi
|
|
||||||
index 8056dc843e..398b205ec2 100644
|
|
||||||
--- a/arch/arm/dts/rk3399-evb-u-boot.dtsi
|
|
||||||
+++ b/arch/arm/dts/rk3399-evb-u-boot.dtsi
|
|
||||||
@@ -13,10 +13,6 @@
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
-&rng {
|
|
||||||
- status = "okay";
|
|
||||||
-};
|
|
||||||
-
|
|
||||||
&i2c0 {
|
|
||||||
u-boot,dm-pre-reloc;
|
|
||||||
};
|
|
||||||
diff --git a/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi b/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi
|
|
||||||
index ded7db0aef..c3e866a779 100644
|
|
||||||
--- a/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi
|
|
||||||
+++ b/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi
|
|
||||||
@@ -28,10 +28,6 @@
|
|
||||||
u-boot,dm-pre-reloc;
|
|
||||||
};
|
|
||||||
|
|
||||||
-&rng {
|
|
||||||
- status = "okay";
|
|
||||||
-};
|
|
||||||
-
|
|
||||||
&sdhci {
|
|
||||||
max-frequency = <25000000>;
|
|
||||||
u-boot,dm-pre-reloc;
|
|
||||||
diff --git a/arch/arm/dts/rk3399-rockpro64-u-boot.dtsi b/arch/arm/dts/rk3399-rockpro64-u-boot.dtsi
|
|
||||||
index 6317b47e41..37dff04adf 100644
|
|
||||||
--- a/arch/arm/dts/rk3399-rockpro64-u-boot.dtsi
|
|
||||||
+++ b/arch/arm/dts/rk3399-rockpro64-u-boot.dtsi
|
|
||||||
@@ -15,10 +15,6 @@
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
-&rng {
|
|
||||||
- status = "okay";
|
|
||||||
-};
|
|
||||||
-
|
|
||||||
&spi1 {
|
|
||||||
spi_flash: flash@0 {
|
|
||||||
u-boot,dm-pre-reloc;
|
|
||||||
diff --git a/arch/arm/dts/rk3399-u-boot.dtsi b/arch/arm/dts/rk3399-u-boot.dtsi
|
|
||||||
index ecd230c720..73922c328a 100644
|
|
||||||
--- a/arch/arm/dts/rk3399-u-boot.dtsi
|
|
||||||
+++ b/arch/arm/dts/rk3399-u-boot.dtsi
|
|
||||||
@@ -32,7 +32,7 @@
|
|
||||||
rng: rng@ff8b8000 {
|
|
||||||
compatible = "rockchip,cryptov1-rng";
|
|
||||||
reg = <0x0 0xff8b8000 0x0 0x1000>;
|
|
||||||
- status = "disabled";
|
|
||||||
+ status = "okay";
|
|
||||||
};
|
|
||||||
|
|
||||||
dmc: dmc {
|
|
||||||
--
|
|
||||||
2.29.2
|
|
||||||
|
|
||||||
From 62093137fcbe760d009cf2757feda7ccf328fbb7 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Peter Robinson <pbrobinson@gmail.com>
|
|
||||||
Date: Wed, 16 Dec 2020 15:37:21 +0000
|
|
||||||
Subject: [PATCH 2/2] configs: rk3399: enable rng on firefly/rock960/rockpro64
|
|
||||||
|
|
||||||
Enable the RNG on the Firefly, rock960 and RockPro64 devices
|
|
||||||
to enable KASLR on devices that support it.
|
|
||||||
|
|
||||||
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
|
|
||||||
---
|
|
||||||
configs/firefly-rk3399_defconfig | 2 ++
|
|
||||||
configs/rock960-rk3399_defconfig | 2 ++
|
|
||||||
configs/rockpro64-rk3399_defconfig | 2 ++
|
|
||||||
3 files changed, 6 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/configs/firefly-rk3399_defconfig b/configs/firefly-rk3399_defconfig
|
|
||||||
index c453b82dc5..cfbaae40aa 100644
|
|
||||||
--- a/configs/firefly-rk3399_defconfig
|
|
||||||
+++ b/configs/firefly-rk3399_defconfig
|
|
||||||
@@ -35,6 +35,8 @@ CONFIG_MMC_DW=y
|
|
||||||
CONFIG_MMC_DW_ROCKCHIP=y
|
|
||||||
CONFIG_MMC_SDHCI=y
|
|
||||||
CONFIG_MMC_SDHCI_ROCKCHIP=y
|
|
||||||
+CONFIG_DM_RNG=y
|
|
||||||
+CONFIG_RNG_ROCKCHIP=y
|
|
||||||
CONFIG_SF_DEFAULT_SPEED=20000000
|
|
||||||
CONFIG_DM_ETH=y
|
|
||||||
CONFIG_ETH_DESIGNWARE=y
|
|
||||||
diff --git a/configs/rock960-rk3399_defconfig b/configs/rock960-rk3399_defconfig
|
|
||||||
index 65dce3cd73..aadbc55f57 100644
|
|
||||||
--- a/configs/rock960-rk3399_defconfig
|
|
||||||
+++ b/configs/rock960-rk3399_defconfig
|
|
||||||
@@ -39,6 +39,8 @@ CONFIG_MMC_DW_ROCKCHIP=y
|
|
||||||
CONFIG_MMC_SDHCI=y
|
|
||||||
CONFIG_MMC_SDHCI_SDMA=y
|
|
||||||
CONFIG_MMC_SDHCI_ROCKCHIP=y
|
|
||||||
+CONFIG_DM_RNG=y
|
|
||||||
+CONFIG_RNG_ROCKCHIP=y
|
|
||||||
CONFIG_DM_ETH=y
|
|
||||||
CONFIG_NVME=y
|
|
||||||
CONFIG_PCI=y
|
|
||||||
diff --git a/configs/rockpro64-rk3399_defconfig b/configs/rockpro64-rk3399_defconfig
|
|
||||||
index 575b7a20d5..f78dfcc8f7 100644
|
|
||||||
--- a/configs/rockpro64-rk3399_defconfig
|
|
||||||
+++ b/configs/rockpro64-rk3399_defconfig
|
|
||||||
@@ -42,6 +42,8 @@ CONFIG_MMC_DW=y
|
|
||||||
CONFIG_MMC_DW_ROCKCHIP=y
|
|
||||||
CONFIG_MMC_SDHCI=y
|
|
||||||
CONFIG_MMC_SDHCI_ROCKCHIP=y
|
|
||||||
+CONFIG_DM_RNG=y
|
|
||||||
+CONFIG_RNG_ROCKCHIP=y
|
|
||||||
CONFIG_SF_DEFAULT_BUS=1
|
|
||||||
CONFIG_SPI_FLASH_GIGADEVICE=y
|
|
||||||
CONFIG_DM_ETH=y
|
|
||||||
--
|
|
||||||
2.29.2
|
|
||||||
|
|
@ -1,115 +0,0 @@
|
|||||||
From 8b0274a733cd1ce39ad9ad18e1bd8efdd02a40b7 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Rob Clark <robdclark@gmail.com>
|
|
||||||
Date: Wed, 21 Jun 2017 14:21:15 -0400
|
|
||||||
Subject: [PATCH 1/3] WIP: fix usb
|
|
||||||
|
|
||||||
---
|
|
||||||
common/usb_storage.c | 4 ++--
|
|
||||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/common/usb_storage.c b/common/usb_storage.c
|
|
||||||
index d92ebb6eb19..9df3c3daaf4 100644
|
|
||||||
--- a/common/usb_storage.c
|
|
||||||
+++ b/common/usb_storage.c
|
|
||||||
@@ -1016,7 +1016,7 @@ static int usb_request_sense(struct scsi_cmd *srb, struct us_data *ss)
|
|
||||||
|
|
||||||
static int usb_test_unit_ready(struct scsi_cmd *srb, struct us_data *ss)
|
|
||||||
{
|
|
||||||
- int retries = 10;
|
|
||||||
+ int retries = 20;
|
|
||||||
|
|
||||||
do {
|
|
||||||
memset(&srb->cmd[0], 0, 12);
|
|
||||||
@@ -1039,7 +1039,7 @@ static int usb_test_unit_ready(struct scsi_cmd *srb, struct us_data *ss)
|
|
||||||
if ((srb->sense_buf[2] == 0x02) &&
|
|
||||||
(srb->sense_buf[12] == 0x3a))
|
|
||||||
return -1;
|
|
||||||
- mdelay(100);
|
|
||||||
+ mdelay(250);
|
|
||||||
} while (retries--);
|
|
||||||
|
|
||||||
return -1;
|
|
||||||
--
|
|
||||||
2.19.1
|
|
||||||
|
|
||||||
From 7bf41d74ca9d58bc2243b7688f8987c1d373ea56 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Rob Clark <robdclark@gmail.com>
|
|
||||||
Date: Mon, 3 Jul 2017 08:34:37 -0400
|
|
||||||
Subject: [PATCH 2/3] HACK: disable emmc
|
|
||||||
|
|
||||||
Hitting some timeout which makes boot take much longer. And
|
|
||||||
uefi/boot/rootfs partitions will be on sd-card or usb disk, etc,
|
|
||||||
so we can just ignore emmc.
|
|
||||||
---
|
|
||||||
arch/arm/dts/dragonboard410c.dts | 2 ++
|
|
||||||
1 file changed, 2 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/arch/arm/dts/dragonboard410c.dts b/arch/arm/dts/dragonboard410c.dts
|
|
||||||
index fa348bc621e..bfe7f15d5ed 100644
|
|
||||||
--- a/arch/arm/dts/dragonboard410c.dts
|
|
||||||
+++ b/arch/arm/dts/dragonboard410c.dts
|
|
||||||
@@ -106,6 +106,7 @@
|
|
||||||
#phy-cells = <0>;
|
|
||||||
};
|
|
||||||
|
|
||||||
+/*
|
|
||||||
sdhci@07824000 {
|
|
||||||
compatible = "qcom,sdhci-msm-v4";
|
|
||||||
reg = <0x7824900 0x11c 0x7824000 0x800>;
|
|
||||||
@@ -115,6 +116,7 @@
|
|
||||||
clock = <&clkc 0>;
|
|
||||||
clock-frequency = <100000000>;
|
|
||||||
};
|
|
||||||
+*/
|
|
||||||
|
|
||||||
sdhci@07864000 {
|
|
||||||
compatible = "qcom,sdhci-msm-v4";
|
|
||||||
--
|
|
||||||
2.19.1
|
|
||||||
|
|
||||||
From 871fe802cf3ab593b9332c4f36ab2b3f179d51ae Mon Sep 17 00:00:00 2001
|
|
||||||
From: Peter Robinson <pbrobinson@gmail.com>
|
|
||||||
Date: Tue, 4 Sep 2018 12:21:59 +0100
|
|
||||||
Subject: [PATCH 3/3] add options for dm410c config
|
|
||||||
|
|
||||||
---
|
|
||||||
configs/dragonboard410c_defconfig | 10 ++++++++++
|
|
||||||
1 file changed, 10 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/configs/dragonboard410c_defconfig b/configs/dragonboard410c_defconfig
|
|
||||||
index a55abaf8df5..4ece0cafbe4 100644
|
|
||||||
--- a/configs/dragonboard410c_defconfig
|
|
||||||
+++ b/configs/dragonboard410c_defconfig
|
|
||||||
@@ -7,6 +7,8 @@ CONFIG_NR_DRAM_BANKS=1
|
|
||||||
# CONFIG_ANDROID_BOOT_IMAGE is not set
|
|
||||||
CONFIG_FIT=y
|
|
||||||
CONFIG_OF_BOARD_SETUP=y
|
|
||||||
+CONFIG_FAT_WRITE=y
|
|
||||||
+CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE=y
|
|
||||||
CONFIG_MISC_INIT_R=y
|
|
||||||
# CONFIG_DISPLAY_CPUINFO is not set
|
|
||||||
# CONFIG_DISPLAY_BOARDINFO is not set
|
|
||||||
@@ -41,6 +43,13 @@ CONFIG_DM_PMIC=y
|
|
||||||
CONFIG_PMIC_PM8916=y
|
|
||||||
CONFIG_MSM_SERIAL=y
|
|
||||||
CONFIG_SPMI_MSM=y
|
|
||||||
+CONFIG_DM_ETH=y
|
|
||||||
+CONFIG_DM_KEYBOARD=y
|
|
||||||
+CONFIG_DM_VIDEO=y
|
|
||||||
+# CONFG_VIDEO_BPP8 is not set
|
|
||||||
+CONFIG_NO_FB_CLEAR=y
|
|
||||||
+CONFIG_VIDEO_SIMPLE=y
|
|
||||||
+CONFIG_USB_KEYBOARD=y
|
|
||||||
CONFIG_USB=y
|
|
||||||
CONFIG_DM_USB=y
|
|
||||||
CONFIG_USB_EHCI_HCD=y
|
|
||||||
@@ -57,5 +66,6 @@ CONFIG_USB_HOST_ETHER=y
|
|
||||||
CONFIG_USB_ETHER_ASIX=y
|
|
||||||
CONFIG_USB_ETHER_ASIX88179=y
|
|
||||||
CONFIG_USB_ETHER_MCS7830=y
|
|
||||||
+CONFIG_USB_ETHER_RTL8152=y
|
|
||||||
CONFIG_USB_ETHER_SMSC95XX=y
|
|
||||||
CONFIG_OF_LIBFDT_OVERLAY=y
|
|
||||||
--
|
|
||||||
2.19.1
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
@ -1,450 +0,0 @@
|
|||||||
From patchwork Tue Dec 15 09:49:23 2020
|
|
||||||
Content-Type: text/plain; charset="utf-8"
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Transfer-Encoding: 7bit
|
|
||||||
X-Patchwork-Submitter: mbrugger <matthias.bgg@kernel.org>
|
|
||||||
X-Patchwork-Id: 1416366
|
|
||||||
X-Patchwork-Delegate: matthias.bgg@gmail.com
|
|
||||||
Return-Path: <u-boot-bounces@lists.denx.de>
|
|
||||||
X-Original-To: incoming@patchwork.ozlabs.org
|
|
||||||
Delivered-To: patchwork-incoming@bilbo.ozlabs.org
|
|
||||||
Authentication-Results: ozlabs.org;
|
|
||||||
spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de
|
|
||||||
(client-ip=85.214.62.61; helo=phobos.denx.de;
|
|
||||||
envelope-from=u-boot-bounces@lists.denx.de; receiver=<UNKNOWN>)
|
|
||||||
Authentication-Results: ozlabs.org;
|
|
||||||
dmarc=fail (p=none dis=none) header.from=kernel.org
|
|
||||||
Received: from phobos.denx.de (phobos.denx.de [85.214.62.61])
|
|
||||||
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
|
|
||||||
key-exchange X25519 server-signature RSA-PSS (4096 bits))
|
|
||||||
(No client certificate requested)
|
|
||||||
by ozlabs.org (Postfix) with ESMTPS id 4CwD58649Dz9s0b
|
|
||||||
for <incoming@patchwork.ozlabs.org>; Tue, 15 Dec 2020 20:49:53 +1100 (AEDT)
|
|
||||||
Received: from h2850616.stratoserver.net (localhost [IPv6:::1])
|
|
||||||
by phobos.denx.de (Postfix) with ESMTP id 4EC6082956;
|
|
||||||
Tue, 15 Dec 2020 10:49:42 +0100 (CET)
|
|
||||||
Authentication-Results: phobos.denx.de;
|
|
||||||
dmarc=fail (p=none dis=none) header.from=kernel.org
|
|
||||||
Authentication-Results: phobos.denx.de;
|
|
||||||
spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de
|
|
||||||
Received: by phobos.denx.de (Postfix, from userid 109)
|
|
||||||
id B1A738295E; Tue, 15 Dec 2020 10:49:40 +0100 (CET)
|
|
||||||
X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de
|
|
||||||
X-Spam-Level:
|
|
||||||
X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_HI,
|
|
||||||
SPF_HELO_NONE autolearn=ham autolearn_force=no version=3.4.2
|
|
||||||
Received: from mail.kernel.org (mail.kernel.org [198.145.29.99])
|
|
||||||
(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))
|
|
||||||
(No client certificate requested)
|
|
||||||
by phobos.denx.de (Postfix) with ESMTPS id 38FB382955
|
|
||||||
for <u-boot@lists.denx.de>; Tue, 15 Dec 2020 10:49:37 +0100 (CET)
|
|
||||||
Authentication-Results: phobos.denx.de;
|
|
||||||
dmarc=pass (p=none dis=none) header.from=kernel.org
|
|
||||||
Authentication-Results: phobos.denx.de;
|
|
||||||
spf=pass smtp.mailfrom=matthias.bgg@kernel.org
|
|
||||||
From: matthias.bgg@kernel.org
|
|
||||||
Authentication-Results: mail.kernel.org;
|
|
||||||
dkim=permerror (bad message/signature format)
|
|
||||||
To: sughosh.ganu@linaro.org,
|
|
||||||
xypron.glpk@gmx.de
|
|
||||||
Cc: u-boot@lists.denx.de,
|
|
||||||
Matthias Brugger <mbrugger@suse.com>
|
|
||||||
Subject: [PATCH v2 1/2] rng: Add iProc RNG200 driver
|
|
||||||
Date: Tue, 15 Dec 2020 10:49:23 +0100
|
|
||||||
Message-Id: <20201215094924.30072-1-matthias.bgg@kernel.org>
|
|
||||||
X-Mailer: git-send-email 2.29.2
|
|
||||||
MIME-Version: 1.0
|
|
||||||
X-BeenThere: u-boot@lists.denx.de
|
|
||||||
X-Mailman-Version: 2.1.34
|
|
||||||
Precedence: list
|
|
||||||
List-Id: U-Boot discussion <u-boot.lists.denx.de>
|
|
||||||
List-Unsubscribe: <https://lists.denx.de/options/u-boot>,
|
|
||||||
<mailto:u-boot-request@lists.denx.de?subject=unsubscribe>
|
|
||||||
List-Archive: <https://lists.denx.de/pipermail/u-boot/>
|
|
||||||
List-Post: <mailto:u-boot@lists.denx.de>
|
|
||||||
List-Help: <mailto:u-boot-request@lists.denx.de?subject=help>
|
|
||||||
List-Subscribe: <https://lists.denx.de/listinfo/u-boot>,
|
|
||||||
<mailto:u-boot-request@lists.denx.de?subject=subscribe>
|
|
||||||
Errors-To: u-boot-bounces@lists.denx.de
|
|
||||||
Sender: "U-Boot" <u-boot-bounces@lists.denx.de>
|
|
||||||
X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de
|
|
||||||
X-Virus-Status: Clean
|
|
||||||
|
|
||||||
From: Matthias Brugger <mbrugger@suse.com>
|
|
||||||
|
|
||||||
Add support for random number generator RNG200.
|
|
||||||
This is for example found on RPi4.
|
|
||||||
|
|
||||||
Signed-off-by: Matthias Brugger <mbrugger@suse.com>
|
|
||||||
Tested-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
|
|
||||||
---
|
|
||||||
|
|
||||||
Changes in v2: None
|
|
||||||
|
|
||||||
drivers/rng/Kconfig | 6 ++
|
|
||||||
drivers/rng/Makefile | 1 +
|
|
||||||
drivers/rng/iproc_rng200.c | 186 +++++++++++++++++++++++++++++++++++++
|
|
||||||
3 files changed, 193 insertions(+)
|
|
||||||
create mode 100644 drivers/rng/iproc_rng200.c
|
|
||||||
|
|
||||||
diff --git a/drivers/rng/Kconfig b/drivers/rng/Kconfig
|
|
||||||
index 11001c8ae7..94915d45b3 100644
|
|
||||||
--- a/drivers/rng/Kconfig
|
|
||||||
+++ b/drivers/rng/Kconfig
|
|
||||||
@@ -46,4 +46,10 @@ config RNG_ROCKCHIP
|
|
||||||
Enable random number generator for rockchip.This driver is
|
|
||||||
support rng module of crypto v1 and crypto v2.
|
|
||||||
|
|
||||||
+config RNG_IPROC200
|
|
||||||
+ bool "Broadcom iProc RNG200 random number generator"
|
|
||||||
+ depends on DM_RNG
|
|
||||||
+ default n
|
|
||||||
+ help
|
|
||||||
+ Enable random number generator for RPI4.
|
|
||||||
endif
|
|
||||||
diff --git a/drivers/rng/Makefile b/drivers/rng/Makefile
|
|
||||||
index 8953406882..39f7ee3f03 100644
|
|
||||||
--- a/drivers/rng/Makefile
|
|
||||||
+++ b/drivers/rng/Makefile
|
|
||||||
@@ -9,3 +9,4 @@ obj-$(CONFIG_RNG_SANDBOX) += sandbox_rng.o
|
|
||||||
obj-$(CONFIG_RNG_MSM) += msm_rng.o
|
|
||||||
obj-$(CONFIG_RNG_STM32MP1) += stm32mp1_rng.o
|
|
||||||
obj-$(CONFIG_RNG_ROCKCHIP) += rockchip_rng.o
|
|
||||||
+obj-$(CONFIG_RNG_IPROC200) += iproc_rng200.o
|
|
||||||
diff --git a/drivers/rng/iproc_rng200.c b/drivers/rng/iproc_rng200.c
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000000..1063f43953
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/drivers/rng/iproc_rng200.c
|
|
||||||
@@ -0,0 +1,186 @@
|
|
||||||
+// SPDX-License-Identifier: GPL-2.0-or-later
|
|
||||||
+/*
|
|
||||||
+ * Copyright 2020, Matthias Brugger <mbrugger@suse.com>
|
|
||||||
+ *
|
|
||||||
+ * Driver for Raspberry Pi hardware random number generator
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+#include <common.h>
|
|
||||||
+#include <dm.h>
|
|
||||||
+#include <linux/delay.h>
|
|
||||||
+#include <rng.h>
|
|
||||||
+#include <asm/io.h>
|
|
||||||
+
|
|
||||||
+#define usleep_range(a, b) udelay((b))
|
|
||||||
+
|
|
||||||
+#define RNG_CTRL_OFFSET 0x00
|
|
||||||
+#define RNG_CTRL_RNG_RBGEN_MASK 0x00001FFF
|
|
||||||
+#define RNG_CTRL_RNG_RBGEN_ENABLE 0x00000001
|
|
||||||
+#define RNG_CTRL_RNG_RBGEN_DISABLE 0x00000000
|
|
||||||
+
|
|
||||||
+#define RNG_SOFT_RESET_OFFSET 0x04
|
|
||||||
+#define RNG_SOFT_RESET 0x00000001
|
|
||||||
+
|
|
||||||
+#define RBG_SOFT_RESET_OFFSET 0x08
|
|
||||||
+#define RBG_SOFT_RESET 0x00000001
|
|
||||||
+
|
|
||||||
+#define RNG_INT_STATUS_OFFSET 0x18
|
|
||||||
+#define RNG_INT_STATUS_MASTER_FAIL_LOCKOUT_IRQ_MASK 0x80000000
|
|
||||||
+#define RNG_INT_STATUS_NIST_FAIL_IRQ_MASK 0x00000020
|
|
||||||
+
|
|
||||||
+#define RNG_FIFO_DATA_OFFSET 0x20
|
|
||||||
+
|
|
||||||
+#define RNG_FIFO_COUNT_OFFSET 0x24
|
|
||||||
+#define RNG_FIFO_COUNT_RNG_FIFO_COUNT_MASK 0x000000FF
|
|
||||||
+
|
|
||||||
+struct iproc_rng200_platdata {
|
|
||||||
+ fdt_addr_t base;
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+static void iproc_rng200_enable(struct iproc_rng200_platdata *pdata, bool enable)
|
|
||||||
+{
|
|
||||||
+ fdt_addr_t rng_base = pdata->base;
|
|
||||||
+ u32 val;
|
|
||||||
+
|
|
||||||
+ val = readl(rng_base + RNG_CTRL_OFFSET);
|
|
||||||
+ val &= ~RNG_CTRL_RNG_RBGEN_MASK;
|
|
||||||
+ if (enable)
|
|
||||||
+ val |= RNG_CTRL_RNG_RBGEN_ENABLE;
|
|
||||||
+ else
|
|
||||||
+ val &= ~RNG_CTRL_RNG_RBGEN_ENABLE;
|
|
||||||
+
|
|
||||||
+ writel(val, rng_base + RNG_CTRL_OFFSET);
|
|
||||||
+
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static void iproc_rng200_restart(struct iproc_rng200_platdata *pdata)
|
|
||||||
+{
|
|
||||||
+ fdt_addr_t rng_base = pdata->base;
|
|
||||||
+ u32 val;
|
|
||||||
+
|
|
||||||
+ iproc_rng200_enable(pdata, false);
|
|
||||||
+
|
|
||||||
+ /* Clear all interrupt status */
|
|
||||||
+ writel(0xFFFFFFFFUL, rng_base + RNG_INT_STATUS_OFFSET);
|
|
||||||
+
|
|
||||||
+ /* Reset RNG and RBG */
|
|
||||||
+ val = readl(rng_base + RBG_SOFT_RESET_OFFSET);
|
|
||||||
+ val |= RBG_SOFT_RESET;
|
|
||||||
+ writel(val, rng_base + RBG_SOFT_RESET_OFFSET);
|
|
||||||
+
|
|
||||||
+ val = readl(rng_base + RNG_SOFT_RESET_OFFSET);
|
|
||||||
+ val |= RNG_SOFT_RESET;
|
|
||||||
+ writel(val, rng_base + RNG_SOFT_RESET_OFFSET);
|
|
||||||
+
|
|
||||||
+ val = readl(rng_base + RNG_SOFT_RESET_OFFSET);
|
|
||||||
+ val &= ~RNG_SOFT_RESET;
|
|
||||||
+ writel(val, rng_base + RNG_SOFT_RESET_OFFSET);
|
|
||||||
+
|
|
||||||
+ val = readl(rng_base + RBG_SOFT_RESET_OFFSET);
|
|
||||||
+ val &= ~RBG_SOFT_RESET;
|
|
||||||
+ writel(val, rng_base + RBG_SOFT_RESET_OFFSET);
|
|
||||||
+
|
|
||||||
+ iproc_rng200_enable(pdata, true);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int iproc_rng200_read(struct udevice *dev, void *data, size_t len)
|
|
||||||
+{
|
|
||||||
+ struct iproc_rng200_platdata *priv = dev_get_platdata(dev);
|
|
||||||
+ char *buf = (char *)data;
|
|
||||||
+ u32 num_remaining = len;
|
|
||||||
+ u32 status;
|
|
||||||
+
|
|
||||||
+ #define MAX_RESETS_PER_READ 1
|
|
||||||
+ u32 num_resets = 0;
|
|
||||||
+
|
|
||||||
+ while (num_remaining > 0) {
|
|
||||||
+
|
|
||||||
+ /* Is RNG sane? If not, reset it. */
|
|
||||||
+ status = readl(priv->base + RNG_INT_STATUS_OFFSET);
|
|
||||||
+ if ((status & (RNG_INT_STATUS_MASTER_FAIL_LOCKOUT_IRQ_MASK |
|
|
||||||
+ RNG_INT_STATUS_NIST_FAIL_IRQ_MASK)) != 0) {
|
|
||||||
+
|
|
||||||
+ if (num_resets >= MAX_RESETS_PER_READ)
|
|
||||||
+ return len - num_remaining;
|
|
||||||
+
|
|
||||||
+ iproc_rng200_restart(priv);
|
|
||||||
+ num_resets++;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /* Are there any random numbers available? */
|
|
||||||
+ if ((readl(priv->base + RNG_FIFO_COUNT_OFFSET) &
|
|
||||||
+ RNG_FIFO_COUNT_RNG_FIFO_COUNT_MASK) > 0) {
|
|
||||||
+
|
|
||||||
+ if (num_remaining >= sizeof(u32)) {
|
|
||||||
+ /* Buffer has room to store entire word */
|
|
||||||
+ *(u32 *)buf = readl(priv->base +
|
|
||||||
+ RNG_FIFO_DATA_OFFSET);
|
|
||||||
+ buf += sizeof(u32);
|
|
||||||
+ num_remaining -= sizeof(u32);
|
|
||||||
+ } else {
|
|
||||||
+ /* Buffer can only store partial word */
|
|
||||||
+ u32 rnd_number = readl(priv->base +
|
|
||||||
+ RNG_FIFO_DATA_OFFSET);
|
|
||||||
+ memcpy(buf, &rnd_number, num_remaining);
|
|
||||||
+ buf += num_remaining;
|
|
||||||
+ num_remaining = 0;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ } else {
|
|
||||||
+ /* Can wait, give others chance to run */
|
|
||||||
+ usleep_range(min(num_remaining * 10, 500U), 500);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int iproc_rng200_probe(struct udevice *dev)
|
|
||||||
+{
|
|
||||||
+ struct iproc_rng200_platdata *priv = dev_get_platdata(dev);
|
|
||||||
+
|
|
||||||
+ iproc_rng200_enable(priv, true);
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int iproc_rng200_remove(struct udevice *dev)
|
|
||||||
+{
|
|
||||||
+ struct iproc_rng200_platdata *priv = dev_get_platdata(dev);
|
|
||||||
+
|
|
||||||
+ iproc_rng200_enable(priv, false);
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int iproc_rng200_ofdata_to_platdata(struct udevice *dev)
|
|
||||||
+{
|
|
||||||
+ struct iproc_rng200_platdata *pdata = dev_get_platdata(dev);
|
|
||||||
+
|
|
||||||
+ pdata->base = dev_read_addr(dev);
|
|
||||||
+ if (!pdata->base)
|
|
||||||
+ return -ENODEV;
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static const struct dm_rng_ops iproc_rng200_ops = {
|
|
||||||
+ .read = iproc_rng200_read,
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+static const struct udevice_id iproc_rng200_rng_match[] = {
|
|
||||||
+ { .compatible = "brcm,bcm2711-rng200", },
|
|
||||||
+ { .compatible = "brcm,iproc-rng200", },
|
|
||||||
+ {},
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+U_BOOT_DRIVER(iproc_rng200_rng) = {
|
|
||||||
+ .name = "iproc_rng200-rng",
|
|
||||||
+ .id = UCLASS_RNG,
|
|
||||||
+ .of_match = iproc_rng200_rng_match,
|
|
||||||
+ .ops = &iproc_rng200_ops,
|
|
||||||
+ .probe = iproc_rng200_probe,
|
|
||||||
+ .remove = iproc_rng200_remove,
|
|
||||||
+ .platdata_auto_alloc_size = sizeof(struct iproc_rng200_platdata),
|
|
||||||
+ .ofdata_to_platdata = iproc_rng200_ofdata_to_platdata,
|
|
||||||
+};
|
|
||||||
|
|
||||||
From patchwork Tue Dec 15 09:49:24 2020
|
|
||||||
Content-Type: text/plain; charset="utf-8"
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Transfer-Encoding: 7bit
|
|
||||||
X-Patchwork-Submitter: mbrugger <matthias.bgg@kernel.org>
|
|
||||||
X-Patchwork-Id: 1416367
|
|
||||||
X-Patchwork-Delegate: matthias.bgg@gmail.com
|
|
||||||
Return-Path: <u-boot-bounces@lists.denx.de>
|
|
||||||
X-Original-To: incoming@patchwork.ozlabs.org
|
|
||||||
Delivered-To: patchwork-incoming@bilbo.ozlabs.org
|
|
||||||
Authentication-Results: ozlabs.org;
|
|
||||||
spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de
|
|
||||||
(client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de;
|
|
||||||
envelope-from=u-boot-bounces@lists.denx.de; receiver=<UNKNOWN>)
|
|
||||||
Authentication-Results: ozlabs.org;
|
|
||||||
dmarc=fail (p=none dis=none) header.from=kernel.org
|
|
||||||
Received: from phobos.denx.de (phobos.denx.de
|
|
||||||
[IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01])
|
|
||||||
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
|
|
||||||
key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest
|
|
||||||
SHA256)
|
|
||||||
(No client certificate requested)
|
|
||||||
by ozlabs.org (Postfix) with ESMTPS id 4CwD5D4Gf2z9s0b
|
|
||||||
for <incoming@patchwork.ozlabs.org>; Tue, 15 Dec 2020 20:50:08 +1100 (AEDT)
|
|
||||||
Received: from h2850616.stratoserver.net (localhost [IPv6:::1])
|
|
||||||
by phobos.denx.de (Postfix) with ESMTP id A25E782961;
|
|
||||||
Tue, 15 Dec 2020 10:49:46 +0100 (CET)
|
|
||||||
Authentication-Results: phobos.denx.de;
|
|
||||||
dmarc=fail (p=none dis=none) header.from=kernel.org
|
|
||||||
Authentication-Results: phobos.denx.de;
|
|
||||||
spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de
|
|
||||||
Received: by phobos.denx.de (Postfix, from userid 109)
|
|
||||||
id 9EC418295C; Tue, 15 Dec 2020 10:49:41 +0100 (CET)
|
|
||||||
X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de
|
|
||||||
X-Spam-Level:
|
|
||||||
X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_HI,
|
|
||||||
SPF_HELO_NONE autolearn=ham autolearn_force=no version=3.4.2
|
|
||||||
Received: from mail.kernel.org (mail.kernel.org [198.145.29.99])
|
|
||||||
(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))
|
|
||||||
(No client certificate requested)
|
|
||||||
by phobos.denx.de (Postfix) with ESMTPS id BCF5682956
|
|
||||||
for <u-boot@lists.denx.de>; Tue, 15 Dec 2020 10:49:38 +0100 (CET)
|
|
||||||
Authentication-Results: phobos.denx.de;
|
|
||||||
dmarc=pass (p=none dis=none) header.from=kernel.org
|
|
||||||
Authentication-Results: phobos.denx.de;
|
|
||||||
spf=pass smtp.mailfrom=matthias.bgg@kernel.org
|
|
||||||
From: matthias.bgg@kernel.org
|
|
||||||
Authentication-Results: mail.kernel.org;
|
|
||||||
dkim=permerror (bad message/signature format)
|
|
||||||
To: sughosh.ganu@linaro.org,
|
|
||||||
xypron.glpk@gmx.de
|
|
||||||
Cc: u-boot@lists.denx.de,
|
|
||||||
Matthias Brugger <mbrugger@suse.com>
|
|
||||||
Subject: [PATCH v2 2/2] config: Enable iProc RNG200 driver in RPi4 configs
|
|
||||||
Date: Tue, 15 Dec 2020 10:49:24 +0100
|
|
||||||
Message-Id: <20201215094924.30072-2-matthias.bgg@kernel.org>
|
|
||||||
X-Mailer: git-send-email 2.29.2
|
|
||||||
In-Reply-To: <20201215094924.30072-1-matthias.bgg@kernel.org>
|
|
||||||
References: <20201215094924.30072-1-matthias.bgg@kernel.org>
|
|
||||||
MIME-Version: 1.0
|
|
||||||
X-BeenThere: u-boot@lists.denx.de
|
|
||||||
X-Mailman-Version: 2.1.34
|
|
||||||
Precedence: list
|
|
||||||
List-Id: U-Boot discussion <u-boot.lists.denx.de>
|
|
||||||
List-Unsubscribe: <https://lists.denx.de/options/u-boot>,
|
|
||||||
<mailto:u-boot-request@lists.denx.de?subject=unsubscribe>
|
|
||||||
List-Archive: <https://lists.denx.de/pipermail/u-boot/>
|
|
||||||
List-Post: <mailto:u-boot@lists.denx.de>
|
|
||||||
List-Help: <mailto:u-boot-request@lists.denx.de?subject=help>
|
|
||||||
List-Subscribe: <https://lists.denx.de/listinfo/u-boot>,
|
|
||||||
<mailto:u-boot-request@lists.denx.de?subject=subscribe>
|
|
||||||
Errors-To: u-boot-bounces@lists.denx.de
|
|
||||||
Sender: "U-Boot" <u-boot-bounces@lists.denx.de>
|
|
||||||
X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de
|
|
||||||
X-Virus-Status: Clean
|
|
||||||
|
|
||||||
From: Matthias Brugger <mbrugger@suse.com>
|
|
||||||
|
|
||||||
We find the iProc RNG200 in the Raspberry Pi 4. Add it to all it's
|
|
||||||
config so that it can be used.
|
|
||||||
|
|
||||||
Signed-off-by: Matthias Brugger <mbrugger@suse.com>
|
|
||||||
---
|
|
||||||
|
|
||||||
Changes in v2:
|
|
||||||
- fix defconfigs using savedefconfig (Heinrich)
|
|
||||||
|
|
||||||
configs/rpi_4_32b_defconfig | 2 ++
|
|
||||||
configs/rpi_4_defconfig | 2 ++
|
|
||||||
configs/rpi_arm64_defconfig | 2 ++
|
|
||||||
drivers/rng/iproc_rng200.c | 1 -
|
|
||||||
4 files changed, 6 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/configs/rpi_4_32b_defconfig b/configs/rpi_4_32b_defconfig
|
|
||||||
index 5ddd838fd5..4039e46c81 100644
|
|
||||||
--- a/configs/rpi_4_32b_defconfig
|
|
||||||
+++ b/configs/rpi_4_32b_defconfig
|
|
||||||
@@ -36,6 +36,8 @@ CONFIG_PCI_BRCMSTB=y
|
|
||||||
CONFIG_PINCTRL=y
|
|
||||||
# CONFIG_PINCTRL_GENERIC is not set
|
|
||||||
CONFIG_DM_RESET=y
|
|
||||||
+CONFIG_DM_RNG=y
|
|
||||||
+CONFIG_RNG_IPROC200=y
|
|
||||||
# CONFIG_REQUIRE_SERIAL_CONSOLE is not set
|
|
||||||
CONFIG_USB=y
|
|
||||||
CONFIG_DM_USB=y
|
|
||||||
diff --git a/configs/rpi_4_defconfig b/configs/rpi_4_defconfig
|
|
||||||
index 2590d0a696..46b6cc3046 100644
|
|
||||||
--- a/configs/rpi_4_defconfig
|
|
||||||
+++ b/configs/rpi_4_defconfig
|
|
||||||
@@ -36,6 +36,8 @@ CONFIG_PCI_BRCMSTB=y
|
|
||||||
CONFIG_PINCTRL=y
|
|
||||||
# CONFIG_PINCTRL_GENERIC is not set
|
|
||||||
CONFIG_DM_RESET=y
|
|
||||||
+CONFIG_DM_RNG=y
|
|
||||||
+CONFIG_RNG_IPROC200=y
|
|
||||||
# CONFIG_REQUIRE_SERIAL_CONSOLE is not set
|
|
||||||
CONFIG_USB=y
|
|
||||||
CONFIG_DM_USB=y
|
|
||||||
diff --git a/configs/rpi_arm64_defconfig b/configs/rpi_arm64_defconfig
|
|
||||||
index 2639219a1a..b75144036d 100644
|
|
||||||
--- a/configs/rpi_arm64_defconfig
|
|
||||||
+++ b/configs/rpi_arm64_defconfig
|
|
||||||
@@ -33,6 +33,8 @@ CONFIG_PCI_BRCMSTB=y
|
|
||||||
CONFIG_PINCTRL=y
|
|
||||||
# CONFIG_PINCTRL_GENERIC is not set
|
|
||||||
CONFIG_DM_RESET=y
|
|
||||||
+CONFIG_DM_RNG=y
|
|
||||||
+CONFIG_RNG_IPROC200=y
|
|
||||||
# CONFIG_REQUIRE_SERIAL_CONSOLE is not set
|
|
||||||
CONFIG_USB=y
|
|
||||||
CONFIG_DM_USB=y
|
|
||||||
diff --git a/drivers/rng/iproc_rng200.c b/drivers/rng/iproc_rng200.c
|
|
||||||
index 1063f43953..378f6cf48d 100644
|
|
||||||
--- a/drivers/rng/iproc_rng200.c
|
|
||||||
+++ b/drivers/rng/iproc_rng200.c
|
|
||||||
@@ -50,7 +50,6 @@ static void iproc_rng200_enable(struct iproc_rng200_platdata *pdata, bool enable
|
|
||||||
val &= ~RNG_CTRL_RNG_RBGEN_ENABLE;
|
|
||||||
|
|
||||||
writel(val, rng_base + RNG_CTRL_OFFSET);
|
|
||||||
-
|
|
||||||
}
|
|
||||||
|
|
||||||
static void iproc_rng200_restart(struct iproc_rng200_platdata *pdata)
|
|
886
rockchip-Add-initial-support-for-the-PinePhone-Pro.patch
Normal file
886
rockchip-Add-initial-support-for-the-PinePhone-Pro.patch
Normal file
@ -0,0 +1,886 @@
|
|||||||
|
From: Martijn Braam <martijn@brixit.nl>
|
||||||
|
Subject: [PATCH] rockchip: Add initial support for the PinePhone Pro
|
||||||
|
Date: Thu, 21 Oct 2021 19:18:43 +0200
|
||||||
|
|
||||||
|
This is a new device by PINE64 that's very similar to the Pinebook Pro
|
||||||
|
that's already supported.
|
||||||
|
|
||||||
|
Specification:
|
||||||
|
- Rockchip RK3399
|
||||||
|
- 4GB Dual-Channel LPDDR4
|
||||||
|
- 128GB eMMC
|
||||||
|
- mSD card slot
|
||||||
|
- AP6255 for 802.11ac WiFi and Bluetooth
|
||||||
|
- 6 inch 720*1440 DSI display
|
||||||
|
- Quectel EG25g usb modem
|
||||||
|
- Type-C port with alt-mode display (DP 1.2) and PD charging.
|
||||||
|
|
||||||
|
Signed-off-by: Martijn Braam <martijn@brixit.nl>
|
||||||
|
---
|
||||||
|
|
||||||
|
arch/arm/dts/Makefile | 1 +
|
||||||
|
arch/arm/dts/rk3399-pinephone-pro-u-boot.dtsi | 44 ++
|
||||||
|
arch/arm/dts/rk3399-pinephone-pro.dts | 520 ++++++++++++++++++
|
||||||
|
arch/arm/mach-rockchip/rk3399/Kconfig | 8 +
|
||||||
|
board/pine64/pinephone-pro-rk3399/Kconfig | 15 +
|
||||||
|
board/pine64/pinephone-pro-rk3399/MAINTAINERS | 8 +
|
||||||
|
board/pine64/pinephone-pro-rk3399/Makefile | 1 +
|
||||||
|
.../pinephone-pro-rk3399.c | 57 ++
|
||||||
|
configs/pinephone-pro-rk3399_defconfig | 92 ++++
|
||||||
|
include/configs/pinephone-pro-rk3399.h | 23 +
|
||||||
|
10 files changed, 769 insertions(+)
|
||||||
|
create mode 100644 arch/arm/dts/rk3399-pinephone-pro-u-boot.dtsi
|
||||||
|
create mode 100644 arch/arm/dts/rk3399-pinephone-pro.dts
|
||||||
|
create mode 100644 board/pine64/pinephone-pro-rk3399/Kconfig
|
||||||
|
create mode 100644 board/pine64/pinephone-pro-rk3399/MAINTAINERS
|
||||||
|
create mode 100644 board/pine64/pinephone-pro-rk3399/Makefile
|
||||||
|
create mode 100644 board/pine64/pinephone-pro-rk3399/pinephone-pro-rk3399.c
|
||||||
|
create mode 100644 configs/pinephone-pro-rk3399_defconfig
|
||||||
|
create mode 100644 include/configs/pinephone-pro-rk3399.h
|
||||||
|
|
||||||
|
diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
|
||||||
|
index ed3d360bb1..3206370226 100644
|
||||||
|
--- a/arch/arm/dts/Makefile
|
||||||
|
+++ b/arch/arm/dts/Makefile
|
||||||
|
@@ -137,6 +137,7 @@ dtb-$(CONFIG_ROCKCHIP_RK3399) += \
|
||||||
|
rk3399-nanopi-r4s.dtb \
|
||||||
|
rk3399-orangepi.dtb \
|
||||||
|
rk3399-pinebook-pro.dtb \
|
||||||
|
+ rk3399-pinephone-pro.dtb \
|
||||||
|
rk3399-puma-haikou.dtb \
|
||||||
|
rk3399-roc-pc.dtb \
|
||||||
|
rk3399-roc-pc-mezzanine.dtb \
|
||||||
|
diff --git a/arch/arm/dts/rk3399-pinephone-pro-u-boot.dtsi b/arch/arm/dts/rk3399-pinephone-pro-u-boot.dtsi
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000..9d44db5978
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/arch/arm/dts/rk3399-pinephone-pro-u-boot.dtsi
|
||||||
|
@@ -0,0 +1,44 @@
|
||||||
|
+// SPDX-License-Identifier: GPL-2.0+
|
||||||
|
+/*
|
||||||
|
+ * Copyright (C) 2019 Peter Robinson <pbrobinson at gmail.com>
|
||||||
|
+ * Copyright (C) 2021 Martijn Braam <martijn at brixit.nl>
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+#include "rk3399-u-boot.dtsi"
|
||||||
|
+#include "rk3399-sdram-lpddr4-100.dtsi"
|
||||||
|
+
|
||||||
|
+/ {
|
||||||
|
+ aliases {
|
||||||
|
+ spi0 = &spi1;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ chosen {
|
||||||
|
+ u-boot,spl-boot-order = "same-as-spl", &sdhci, &sdmmc;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ config {
|
||||||
|
+ u-boot,spl-payload-offset = <0x60000>; /* @ 384KB */
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&i2c0 {
|
||||||
|
+ u-boot,dm-pre-reloc;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&rk818 {
|
||||||
|
+ u-boot,dm-pre-reloc;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&rng {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&sdhci {
|
||||||
|
+ max-frequency = <25000000>;
|
||||||
|
+ u-boot,dm-pre-reloc;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&sdmmc {
|
||||||
|
+ max-frequency = <20000000>;
|
||||||
|
+ u-boot,dm-pre-reloc;
|
||||||
|
+};
|
||||||
|
diff --git a/arch/arm/dts/rk3399-pinephone-pro.dts b/arch/arm/dts/rk3399-pinephone-pro.dts
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000..3fe1845ced
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/arch/arm/dts/rk3399-pinephone-pro.dts
|
||||||
|
@@ -0,0 +1,520 @@
|
||||||
|
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
||||||
|
+/*
|
||||||
|
+ * Copyright (c) 2021 Martijn Braam <martijn@brixit.nl>
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+/dts-v1/;
|
||||||
|
+#include "rk3399.dtsi"
|
||||||
|
+#include "rk3399-opp.dtsi"
|
||||||
|
+
|
||||||
|
+/ {
|
||||||
|
+ model = "Pine64 PinePhone Pro";
|
||||||
|
+ compatible = "pine64,pinephone-pro", "rockchip,rk3399";
|
||||||
|
+
|
||||||
|
+ chosen {
|
||||||
|
+ stdout-path = "serial2:1500000n8";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ sdio_pwrseq: sdio-pwrseq {
|
||||||
|
+ compatible = "mmc-pwrseq-simple";
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ /* Power tree */
|
||||||
|
+ /* Root power source */
|
||||||
|
+ vcc_sysin: vcc-sysin {
|
||||||
|
+ compatible = "regulator-fixed";
|
||||||
|
+ regulator-name = "vcc_sysin";
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-boot-on;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ /* Main 3.3v supply */
|
||||||
|
+ vcc3v3_sys: vcc3v3-sys {
|
||||||
|
+ compatible = "regulator-fixed";
|
||||||
|
+ regulator-name = "vcc3v3_sys";
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-boot-on;
|
||||||
|
+ regulator-min-microvolt = <3300000>;
|
||||||
|
+ regulator-max-microvolt = <3300000>;
|
||||||
|
+ vin-supply = <&vcc_sysin>;
|
||||||
|
+
|
||||||
|
+ regulator-state-mem {
|
||||||
|
+ regulator-on-in-suspend;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&cpu_l0 {
|
||||||
|
+ cpu-supply = <&vdd_cpu_l>;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&cpu_l1 {
|
||||||
|
+ cpu-supply = <&vdd_cpu_l>;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&cpu_l2 {
|
||||||
|
+ cpu-supply = <&vdd_cpu_l>;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&cpu_l3 {
|
||||||
|
+ cpu-supply = <&vdd_cpu_l>;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&cpu_b0 {
|
||||||
|
+ cpu-supply = <&vdd_cpu_b>;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&cpu_b1 {
|
||||||
|
+ cpu-supply = <&vdd_cpu_b>;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&emmc_phy {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&gpu {
|
||||||
|
+ mali-supply = <&vdd_gpu>;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&i2c0 {
|
||||||
|
+ clock-frequency = <400000>;
|
||||||
|
+ i2c-scl-rising-time-ns = <168>;
|
||||||
|
+ i2c-scl-falling-time-ns = <4>;
|
||||||
|
+ status = "okay";
|
||||||
|
+
|
||||||
|
+ rk818: pmic@1c {
|
||||||
|
+ compatible = "rockchip,rk818";
|
||||||
|
+ reg = <0x1c>;
|
||||||
|
+ interrupt-parent = <&gpio1>;
|
||||||
|
+ interrupts = <RK_PC5 IRQ_TYPE_LEVEL_LOW>;
|
||||||
|
+ #clock-cells = <1>;
|
||||||
|
+ clock-output-names = "xin32k", "rk808-clkout2";
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&pmic_int_l>;
|
||||||
|
+ rockchip,system-power-controller;
|
||||||
|
+ wakeup-source;
|
||||||
|
+
|
||||||
|
+ vcc1-supply = <&vcc_sysin>;
|
||||||
|
+ vcc2-supply = <&vcc_sysin>;
|
||||||
|
+ vcc3-supply = <&vcc_sysin>;
|
||||||
|
+ vcc4-supply = <&vcc_sysin>;
|
||||||
|
+ vcc6-supply = <&vcc_sysin>;
|
||||||
|
+ vcc7-supply = <&vcc3v3_sys>;
|
||||||
|
+ vcc8-supply = <&vcc_sysin>;
|
||||||
|
+ vcc9-supply = <&vcc3v3_sys>;
|
||||||
|
+
|
||||||
|
+ regulators {
|
||||||
|
+ vdd_cpu_l: DCDC_REG1 {
|
||||||
|
+ regulator-name = "vdd_cpu_1";
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-boot-on;
|
||||||
|
+ regulator-min-microvolt = <750000>;
|
||||||
|
+ regulator-max-microvolt = <1350000>;
|
||||||
|
+ regulator-ramp-delay = <6001>;
|
||||||
|
+ regulator-state-mem {
|
||||||
|
+ regulator-off-in-suspend;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ vdd_center: DCDC_REG2 {
|
||||||
|
+ regulator-name = "vdd_center";
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-boot-on;
|
||||||
|
+ regulator-min-microvolt = <800000>;
|
||||||
|
+ regulator-max-microvolt = <1350000>;
|
||||||
|
+ regulator-ramp-delay = <6001>;
|
||||||
|
+ regulator-state-mem {
|
||||||
|
+ regulator-off-in-suspend;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ vcc_ddr: DCDC_REG3 {
|
||||||
|
+ regulator-name = "vcc_ddr";
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-boot-on;
|
||||||
|
+ regulator-state-mem {
|
||||||
|
+ regulator-on-in-suspend;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ vcc_1v8: DCDC_REG4 {
|
||||||
|
+ regulator-name = "vcc_1v8";
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-boot-on;
|
||||||
|
+ regulator-min-microvolt = <1800000>;
|
||||||
|
+ regulator-max-microvolt = <1800000>;
|
||||||
|
+ regulator-state-mem {
|
||||||
|
+ regulator-on-in-suspend;
|
||||||
|
+ regulator-suspend-microvolt = <1800000>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ vcca3v0_codec: LDO_REG1 {
|
||||||
|
+ regulator-name = "vcca3v0_codec";
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-boot-on;
|
||||||
|
+ regulator-min-microvolt = <3000000>;
|
||||||
|
+ regulator-max-microvolt = <3000000>;
|
||||||
|
+ regulator-state-mem {
|
||||||
|
+ regulator-off-in-suspend;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ vcc3v0_touch: LDO_REG2 {
|
||||||
|
+ regulator-name = "vcc3v0_touch";
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-boot-on;
|
||||||
|
+ regulator-min-microvolt = <3000000>;
|
||||||
|
+ regulator-max-microvolt = <3000000>;
|
||||||
|
+ regulator-state-mem {
|
||||||
|
+ regulator-off-in-suspend;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ vcca1v8_codec: LDO_REG3 {
|
||||||
|
+ regulator-name = "vcca1v8_codec";
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-boot-on;
|
||||||
|
+ regulator-min-microvolt = <1800000>;
|
||||||
|
+ regulator-max-microvolt = <1800000>;
|
||||||
|
+ regulator-state-mem {
|
||||||
|
+ regulator-off-in-suspend;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ vcc_power_on: LDO_REG4 {
|
||||||
|
+ regulator-name = "vcc_power_on";
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-boot-on;
|
||||||
|
+ regulator-min-microvolt = <3300000>;
|
||||||
|
+ regulator-max-microvolt = <3300000>;
|
||||||
|
+ regulator-state-mem {
|
||||||
|
+ regulator-on-in-suspend;
|
||||||
|
+ regulator-suspend-microvolt = <3300000>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ vcc_3v0: LDO_REG5 {
|
||||||
|
+ regulator-name = "vcc_3v0";
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-boot-on;
|
||||||
|
+ regulator-min-microvolt = <3000000>;
|
||||||
|
+ regulator-max-microvolt = <3000000>;
|
||||||
|
+ regulator-state-mem {
|
||||||
|
+ regulator-on-in-suspend;
|
||||||
|
+ regulator-suspend-microvolt = <3000000>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ vcc_1v5: LDO_REG6 {
|
||||||
|
+ regulator-name = "vcc_1v5";
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-boot-on;
|
||||||
|
+ regulator-min-microvolt = <1500000>;
|
||||||
|
+ regulator-max-microvolt = <1500000>;
|
||||||
|
+ regulator-state-mem {
|
||||||
|
+ regulator-on-in-suspend;
|
||||||
|
+ regulator-suspend-microvolt = <1500000>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ vcc1v8_dvp: LDO_REG7 {
|
||||||
|
+ regulator-name = "vcc1v8_dvp";
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-boot-on;
|
||||||
|
+ regulator-min-microvolt = <1800000>;
|
||||||
|
+ regulator-max-microvolt = <1800000>;
|
||||||
|
+ regulator-state-mem {
|
||||||
|
+ regulator-off-in-suspend;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ vcc3v3_s3: LDO_REG8 {
|
||||||
|
+ regulator-name = "vcc3v3_s3";
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-boot-on;
|
||||||
|
+ regulator-min-microvolt = <3300000>;
|
||||||
|
+ regulator-max-microvolt = <3300000>;
|
||||||
|
+ regulator-state-mem {
|
||||||
|
+ regulator-off-in-suspend;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ vcc_sd: LDO_REG9 {
|
||||||
|
+ regulator-name = "vcc_sd";
|
||||||
|
+ regulator-min-microvolt = <1800000>;
|
||||||
|
+ regulator-max-microvolt = <3300000>;
|
||||||
|
+ regulator-state-mem {
|
||||||
|
+ regulator-on-in-suspend;
|
||||||
|
+ regulator-suspend-microvolt = <3300000>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ vcc3v3_s0: SWITCH_REG {
|
||||||
|
+ regulator-name = "vcc3v3_s0";
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-boot-on;
|
||||||
|
+ regulator-state-mem {
|
||||||
|
+ regulator-on-in-suspend;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ boost_otg: DCDC_BOOST {
|
||||||
|
+ regulator-name = "boost_otg";
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-boot-on;
|
||||||
|
+ regulator-min-microvolt = <5000000>;
|
||||||
|
+ regulator-max-microvolt = <5000000>;
|
||||||
|
+ regulator-state-mem {
|
||||||
|
+ regulator-on-in-suspend;
|
||||||
|
+ regulator-suspend-microvolt = <5000000>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ otg_switch: OTG_SWITCH {
|
||||||
|
+ regulator-name = "otg_switch";
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ vdd_cpu_b: regulator@40 {
|
||||||
|
+ compatible = "silergy,syr827";
|
||||||
|
+ reg = <0x40>;
|
||||||
|
+ fcs,suspend-voltage-selector = <1>;
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&vsel1_pin>;
|
||||||
|
+ regulator-name = "vdd_cpu_b";
|
||||||
|
+ regulator-min-microvolt = <712500>;
|
||||||
|
+ regulator-max-microvolt = <1500000>;
|
||||||
|
+ regulator-ramp-delay = <1000>;
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-boot-on;
|
||||||
|
+
|
||||||
|
+ regulator-state-mem {
|
||||||
|
+ regulator-off-in-suspend;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ vdd_gpu: regulator@41 {
|
||||||
|
+ compatible = "silergy,syr828";
|
||||||
|
+ reg = <0x41>;
|
||||||
|
+ fcs,suspend-voltage-selector = <1>;
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&vsel2_pin>;
|
||||||
|
+ regulator-name = "vdd_gpu";
|
||||||
|
+ regulator-min-microvolt = <712500>;
|
||||||
|
+ regulator-max-microvolt = <1500000>;
|
||||||
|
+ regulator-ramp-delay = <1000>;
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-boot-on;
|
||||||
|
+
|
||||||
|
+ regulator-state-mem {
|
||||||
|
+ regulator-off-in-suspend;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&i2c1 {
|
||||||
|
+ i2c-scl-rising-time-ns = <300>;
|
||||||
|
+ i2c-scl-falling-time-ns = <15>;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&i2c3 {
|
||||||
|
+ i2c-scl-rising-time-ns = <450>;
|
||||||
|
+ i2c-scl-falling-time-ns = <15>;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&i2c4 {
|
||||||
|
+ i2c-scl-rising-time-ns = <600>;
|
||||||
|
+ i2c-scl-falling-time-ns = <20>;
|
||||||
|
+ status = "okay";
|
||||||
|
+
|
||||||
|
+ fusb0: typec-portc@22 {
|
||||||
|
+ compatible = "fcs,fusb302";
|
||||||
|
+ reg = <0x22>;
|
||||||
|
+ interrupt-parent = <&gpio1>;
|
||||||
|
+ interrupts = <RK_PA2 IRQ_TYPE_LEVEL_LOW>;
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&fusb0_int>;
|
||||||
|
+ status = "okay";
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&io_domains {
|
||||||
|
+ status = "okay";
|
||||||
|
+
|
||||||
|
+ bt656-supply = <&vcc1v8_dvp>;
|
||||||
|
+ audio-supply = <&vcca1v8_codec>;
|
||||||
|
+ sdmmc-supply = <&vcc_sd>;
|
||||||
|
+ gpio1830-supply = <&vcc_3v0>;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&pmu_io_domains {
|
||||||
|
+ pmu1830-supply = <&vcc_3v0>;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&pinctrl {
|
||||||
|
+ bt {
|
||||||
|
+ bt_enable_h: bt-enable-h {
|
||||||
|
+ rockchip,pins = <0 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ bt_host_wake_l: bt-host-wake-l {
|
||||||
|
+ rockchip,pins = <0 RK_PA4 RK_FUNC_GPIO &pcfg_pull_down>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ bt_wake_l: bt-wake-l {
|
||||||
|
+ rockchip,pins = <2 RK_PD3 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ buttons {
|
||||||
|
+ pwrbtn: pwrbtn {
|
||||||
|
+ rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ fusb302x {
|
||||||
|
+ fusb0_int: fusb0-int {
|
||||||
|
+ rockchip,pins = <1 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ leds {
|
||||||
|
+ work_led_pin: work-led-pin {
|
||||||
|
+ rockchip,pins = <0 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ diy_led_pin: diy-led-pin {
|
||||||
|
+ rockchip,pins = <0 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ pcie {
|
||||||
|
+ pcie_perst: pcie-perst {
|
||||||
|
+ rockchip,pins = <2 RK_PD4 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ pcie_pwr_en: pcie-pwr-en {
|
||||||
|
+ rockchip,pins = <1 RK_PD0 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ pmic {
|
||||||
|
+ pmic_int_l: pmic-int-l {
|
||||||
|
+ rockchip,pins = <1 RK_PC5 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ vsel1_pin: vsel1-pin {
|
||||||
|
+ rockchip,pins = <1 RK_PC1 RK_FUNC_GPIO &pcfg_pull_down>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ vsel2_pin: vsel2-pin {
|
||||||
|
+ rockchip,pins = <1 RK_PB6 RK_FUNC_GPIO &pcfg_pull_down>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ sdcard {
|
||||||
|
+ sdmmc0_pwr_h: sdmmc0-pwr-h {
|
||||||
|
+ rockchip,pins = <0 RK_PA1 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ sdio-pwrseq {
|
||||||
|
+ wifi_enable_h: wifi-enable-h {
|
||||||
|
+ rockchip,pins = <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ usb-typec {
|
||||||
|
+ vcc5v0_typec_en: vcc5v0_typec_en {
|
||||||
|
+ rockchip,pins = <1 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ usb2 {
|
||||||
|
+ vcc5v0_host_en: vcc5v0-host-en {
|
||||||
|
+ rockchip,pins = <4 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&pwm0 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&pwm1 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&pwm2 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&sdio0 {
|
||||||
|
+ bus-width = <4>;
|
||||||
|
+ cap-sd-highspeed;
|
||||||
|
+ cap-sdio-irq;
|
||||||
|
+ disable-wp;
|
||||||
|
+ keep-power-in-suspend;
|
||||||
|
+ mmc-pwrseq = <&sdio_pwrseq>;
|
||||||
|
+ non-removable;
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&sdio0_bus4 &sdio0_cmd &sdio0_clk>;
|
||||||
|
+ sd-uhs-sdr104;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&sdmmc {
|
||||||
|
+ bus-width = <4>;
|
||||||
|
+ cap-sd-highspeed;
|
||||||
|
+ cd-gpios = <&gpio0 7 GPIO_ACTIVE_LOW>;
|
||||||
|
+ disable-wp;
|
||||||
|
+ max-frequency = <150000000>;
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_bus4>;
|
||||||
|
+ vmmc-supply = <&vcc3v3_s3>;
|
||||||
|
+ vqmmc-supply = <&vcc_1v8>;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&sdhci {
|
||||||
|
+ bus-width = <8>;
|
||||||
|
+ mmc-hs200-1_8v;
|
||||||
|
+ non-removable;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&tsadc {
|
||||||
|
+ /* tshut mode 0:CRU 1:GPIO */
|
||||||
|
+ rockchip,hw-tshut-mode = <1>;
|
||||||
|
+ /* tshut polarity 0:LOW 1:HIGH */
|
||||||
|
+ rockchip,hw-tshut-polarity = <1>;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&uart2 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&vopb {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&vopb_mmu {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&vopl {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&vopl_mmu {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
diff --git a/arch/arm/mach-rockchip/rk3399/Kconfig b/arch/arm/mach-rockchip/rk3399/Kconfig
|
||||||
|
index 17628f9171..3ba603ca80 100644
|
||||||
|
--- a/arch/arm/mach-rockchip/rk3399/Kconfig
|
||||||
|
+++ b/arch/arm/mach-rockchip/rk3399/Kconfig
|
||||||
|
@@ -28,6 +28,13 @@ config TARGET_PINEBOOK_PRO_RK3399
|
||||||
|
with 4Gb RAM, onboard eMMC, USB-C, a USB3 and USB2 port,
|
||||||
|
1920*1080 screen and all the usual laptop features.
|
||||||
|
|
||||||
|
+config TARGET_PINEPHONE_PRO_RK3399
|
||||||
|
+ bool "PinePhone Pro"
|
||||||
|
+ help
|
||||||
|
+ PinePhone Pro is a phone based on the Rockchip rk3399 SoC
|
||||||
|
+ with 4Gb RAM, onboard eMMC, USB-C, a headphone jack,
|
||||||
|
+ 720x1440 screen and an external Quectel USB modem.
|
||||||
|
+
|
||||||
|
config TARGET_PUMA_RK3399
|
||||||
|
bool "Theobroma Systems RK3399-Q7 (Puma)"
|
||||||
|
help
|
||||||
|
@@ -154,6 +161,7 @@ endif # BOOTCOUNT_LIMIT
|
||||||
|
source "board/firefly/roc-pc-rk3399/Kconfig"
|
||||||
|
source "board/google/gru/Kconfig"
|
||||||
|
source "board/pine64/pinebook-pro-rk3399/Kconfig"
|
||||||
|
+source "board/pine64/pinephone-pro-rk3399/Kconfig"
|
||||||
|
source "board/pine64/rockpro64_rk3399/Kconfig"
|
||||||
|
source "board/rockchip/evb_rk3399/Kconfig"
|
||||||
|
source "board/theobroma-systems/puma_rk3399/Kconfig"
|
||||||
|
diff --git a/board/pine64/pinephone-pro-rk3399/Kconfig b/board/pine64/pinephone-pro-rk3399/Kconfig
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000..13d6465ae6
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/board/pine64/pinephone-pro-rk3399/Kconfig
|
||||||
|
@@ -0,0 +1,15 @@
|
||||||
|
+if TARGET_PINEPHONE_PRO_RK3399
|
||||||
|
+
|
||||||
|
+config SYS_BOARD
|
||||||
|
+ default "pinephone-pro-rk3399"
|
||||||
|
+
|
||||||
|
+config SYS_VENDOR
|
||||||
|
+ default "pine64"
|
||||||
|
+
|
||||||
|
+config SYS_CONFIG_NAME
|
||||||
|
+ default "pinephone-pro-rk3399"
|
||||||
|
+
|
||||||
|
+config BOARD_SPECIFIC_OPTIONS
|
||||||
|
+ def_bool y
|
||||||
|
+
|
||||||
|
+endif
|
||||||
|
diff --git a/board/pine64/pinephone-pro-rk3399/MAINTAINERS b/board/pine64/pinephone-pro-rk3399/MAINTAINERS
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000..9ca4fc4cbe
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/board/pine64/pinephone-pro-rk3399/MAINTAINERS
|
||||||
|
@@ -0,0 +1,8 @@
|
||||||
|
+PINEPHONE_PRO
|
||||||
|
+M: Martijn Braam <martijn@brixit.nl>
|
||||||
|
+S: Maintained
|
||||||
|
+F: board/pine64/rk3399-pinephone-pro/
|
||||||
|
+F: include/configs/rk3399-pinephone-pro.h
|
||||||
|
+F: arch/arm/dts/rk3399-pinephone-pro.dts
|
||||||
|
+F: arch/arm/dts/rk3399-pinephone-pro-u-boot.dtsi
|
||||||
|
+F: configs/pinephone-pro-rk3399_defconfig
|
||||||
|
diff --git a/board/pine64/pinephone-pro-rk3399/Makefile b/board/pine64/pinephone-pro-rk3399/Makefile
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000..8d9203053e
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/board/pine64/pinephone-pro-rk3399/Makefile
|
||||||
|
@@ -0,0 +1 @@
|
||||||
|
+obj-y += pinephone-pro-rk3399.o
|
||||||
|
diff --git a/board/pine64/pinephone-pro-rk3399/pinephone-pro-rk3399.c b/board/pine64/pinephone-pro-rk3399/pinephone-pro-rk3399.c
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000..8efeb6ea3d
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/board/pine64/pinephone-pro-rk3399/pinephone-pro-rk3399.c
|
||||||
|
@@ -0,0 +1,57 @@
|
||||||
|
+// SPDX-License-Identifier: GPL-2.0+
|
||||||
|
+/*
|
||||||
|
+ * (C) Copyright 2019 Vasily Khoruzhick <anarsoul@gmail.com>
|
||||||
|
+ * (C) Copyright 2021 Martijn Braam <martijn@brixit.nl>
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+#include <common.h>
|
||||||
|
+#include <dm.h>
|
||||||
|
+#include <init.h>
|
||||||
|
+#include <syscon.h>
|
||||||
|
+#include <asm/io.h>
|
||||||
|
+#include <asm/arch-rockchip/clock.h>
|
||||||
|
+#include <asm/arch-rockchip/grf_rk3399.h>
|
||||||
|
+#include <asm/arch-rockchip/hardware.h>
|
||||||
|
+#include <asm/arch-rockchip/misc.h>
|
||||||
|
+
|
||||||
|
+#define GRF_IO_VSEL_BT565_SHIFT 0
|
||||||
|
+#define PMUGRF_CON0_VSEL_SHIFT 8
|
||||||
|
+
|
||||||
|
+#ifdef CONFIG_MISC_INIT_R
|
||||||
|
+static void setup_iodomain(void)
|
||||||
|
+{
|
||||||
|
+ struct rk3399_grf_regs *grf =
|
||||||
|
+ syscon_get_first_range(ROCKCHIP_SYSCON_GRF);
|
||||||
|
+ struct rk3399_pmugrf_regs *pmugrf =
|
||||||
|
+ syscon_get_first_range(ROCKCHIP_SYSCON_PMUGRF);
|
||||||
|
+
|
||||||
|
+ /* BT565 is in 1.8v domain */
|
||||||
|
+ rk_setreg(&grf->io_vsel, 1 << GRF_IO_VSEL_BT565_SHIFT);
|
||||||
|
+
|
||||||
|
+ /* Set GPIO1 1.8v/3.0v source select to PMU1830_VOL */
|
||||||
|
+ rk_setreg(&pmugrf->soc_con0, 1 << PMUGRF_CON0_VSEL_SHIFT);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+int misc_init_r(void)
|
||||||
|
+{
|
||||||
|
+ const u32 cpuid_offset = 0x7;
|
||||||
|
+ const u32 cpuid_length = 0x10;
|
||||||
|
+ u8 cpuid[cpuid_length];
|
||||||
|
+ int ret;
|
||||||
|
+
|
||||||
|
+ setup_iodomain();
|
||||||
|
+
|
||||||
|
+ ret = rockchip_cpuid_from_efuse(cpuid_offset, cpuid_length, cpuid);
|
||||||
|
+ if (ret)
|
||||||
|
+ return ret;
|
||||||
|
+
|
||||||
|
+ ret = rockchip_cpuid_set(cpuid, cpuid_length);
|
||||||
|
+ if (ret)
|
||||||
|
+ return ret;
|
||||||
|
+
|
||||||
|
+ ret = rockchip_setup_macaddr();
|
||||||
|
+
|
||||||
|
+ return ret;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+#endif
|
||||||
|
diff --git a/configs/pinephone-pro-rk3399_defconfig b/configs/pinephone-pro-rk3399_defconfig
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000..2cf80f7d35
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/configs/pinephone-pro-rk3399_defconfig
|
||||||
|
@@ -0,0 +1,92 @@
|
||||||
|
+CONFIG_ARM=y
|
||||||
|
+CONFIG_SKIP_LOWLEVEL_INIT=y
|
||||||
|
+CONFIG_ARCH_ROCKCHIP=y
|
||||||
|
+CONFIG_SYS_TEXT_BASE=0x00200000
|
||||||
|
+CONFIG_NR_DRAM_BANKS=1
|
||||||
|
+CONFIG_ENV_SIZE=0x8000
|
||||||
|
+CONFIG_ROCKCHIP_RK3399=y
|
||||||
|
+CONFIG_TARGET_PINEPHONE_PRO_RK3399=y
|
||||||
|
+CONFIG_DEBUG_UART_BASE=0xFF1A0000
|
||||||
|
+CONFIG_DEBUG_UART_CLOCK=24000000
|
||||||
|
+CONFIG_SPL_SPI_FLASH_SUPPORT=y
|
||||||
|
+CONFIG_SPL_SPI_SUPPORT=y
|
||||||
|
+CONFIG_DEFAULT_DEVICE_TREE="rk3399-pinephone-pro"
|
||||||
|
+CONFIG_DEBUG_UART=y
|
||||||
|
+CONFIG_SYS_LOAD_ADDR=0x800800
|
||||||
|
+CONFIG_BOOTDELAY=3
|
||||||
|
+CONFIG_USE_PREBOOT=y
|
||||||
|
+CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-pinephone-pro.dtb"
|
||||||
|
+CONFIG_DISPLAY_BOARDINFO_LATE=y
|
||||||
|
+CONFIG_MISC_INIT_R=y
|
||||||
|
+# CONFIG_SPL_RAW_IMAGE_SUPPORT is not set
|
||||||
|
+CONFIG_SPL_STACK_R=y
|
||||||
|
+CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x10000
|
||||||
|
+CONFIG_SPL_MTD_SUPPORT=y
|
||||||
|
+CONFIG_SPL_SPI_LOAD=y
|
||||||
|
+CONFIG_TPL=y
|
||||||
|
+CONFIG_CMD_BOOTZ=y
|
||||||
|
+CONFIG_CMD_GPIO=y
|
||||||
|
+CONFIG_CMD_GPT=y
|
||||||
|
+CONFIG_CMD_I2C=y
|
||||||
|
+CONFIG_CMD_MMC=y
|
||||||
|
+CONFIG_CMD_PCI=y
|
||||||
|
+CONFIG_CMD_USB=y
|
||||||
|
+# CONFIG_CMD_SETEXPR is not set
|
||||||
|
+CONFIG_CMD_TIME=y
|
||||||
|
+CONFIG_CMD_PMIC=y
|
||||||
|
+CONFIG_CMD_REGULATOR=y
|
||||||
|
+CONFIG_SPL_OF_CONTROL=y
|
||||||
|
+CONFIG_OF_SPL_REMOVE_PROPS="pinctrl-0 pinctrl-names clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents"
|
||||||
|
+CONFIG_ENV_IS_IN_SPI_FLASH=y
|
||||||
|
+CONFIG_SYS_RELOC_GD_ENV_ADDR=y
|
||||||
|
+CONFIG_ROCKCHIP_GPIO=y
|
||||||
|
+CONFIG_SYS_I2C_ROCKCHIP=y
|
||||||
|
+CONFIG_DM_KEYBOARD=y
|
||||||
|
+CONFIG_LED=y
|
||||||
|
+CONFIG_LED_GPIO=y
|
||||||
|
+CONFIG_MISC=y
|
||||||
|
+CONFIG_ROCKCHIP_EFUSE=y
|
||||||
|
+CONFIG_MMC_DW=y
|
||||||
|
+CONFIG_MMC_DW_ROCKCHIP=y
|
||||||
|
+CONFIG_MMC_SDHCI=y
|
||||||
|
+CONFIG_MMC_SDHCI_SDMA=y
|
||||||
|
+CONFIG_MMC_SDHCI_ROCKCHIP=y
|
||||||
|
+CONFIG_SF_DEFAULT_SPEED=20000000
|
||||||
|
+CONFIG_SPI_FLASH_GIGADEVICE=y
|
||||||
|
+CONFIG_SPI_FLASH_WINBOND=y
|
||||||
|
+CONFIG_DM_ETH=y
|
||||||
|
+CONFIG_PHY_ROCKCHIP_INNO_USB2=y
|
||||||
|
+CONFIG_PHY_ROCKCHIP_TYPEC=y
|
||||||
|
+CONFIG_DM_PMIC_FAN53555=y
|
||||||
|
+CONFIG_PMIC_RK8XX=y
|
||||||
|
+CONFIG_REGULATOR_PWM=y
|
||||||
|
+CONFIG_REGULATOR_RK8XX=y
|
||||||
|
+CONFIG_PWM_ROCKCHIP=y
|
||||||
|
+CONFIG_RAM_RK3399_LPDDR4=y
|
||||||
|
+CONFIG_DM_RESET=y
|
||||||
|
+CONFIG_DM_RNG=y
|
||||||
|
+CONFIG_RNG_ROCKCHIP=y
|
||||||
|
+CONFIG_BAUDRATE=1500000
|
||||||
|
+CONFIG_DEBUG_UART_SHIFT=2
|
||||||
|
+CONFIG_ROCKCHIP_SPI=y
|
||||||
|
+CONFIG_SYSRESET=y
|
||||||
|
+CONFIG_USB=y
|
||||||
|
+CONFIG_USB_XHCI_HCD=y
|
||||||
|
+CONFIG_USB_XHCI_DWC3=y
|
||||||
|
+CONFIG_USB_EHCI_HCD=y
|
||||||
|
+CONFIG_USB_EHCI_GENERIC=y
|
||||||
|
+CONFIG_USB_OHCI_HCD=y
|
||||||
|
+CONFIG_USB_OHCI_GENERIC=y
|
||||||
|
+CONFIG_USB_DWC3=y
|
||||||
|
+CONFIG_USB_DWC3_GENERIC=y
|
||||||
|
+CONFIG_USB_KEYBOARD=y
|
||||||
|
+CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE=y
|
||||||
|
+CONFIG_USB_HOST_ETHER=y
|
||||||
|
+CONFIG_USB_ETHER_ASIX=y
|
||||||
|
+CONFIG_USB_ETHER_RTL8152=y
|
||||||
|
+CONFIG_DM_VIDEO=y
|
||||||
|
+CONFIG_DISPLAY=y
|
||||||
|
+CONFIG_VIDEO_ROCKCHIP=y
|
||||||
|
+CONFIG_DISPLAY_ROCKCHIP_EDP=y
|
||||||
|
+CONFIG_SPL_TINY_MEMSET=y
|
||||||
|
+CONFIG_ERRNO_STR=y
|
||||||
|
diff --git a/include/configs/pinephone-pro-rk3399.h b/include/configs/pinephone-pro-rk3399.h
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000..fefa793fdd
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/include/configs/pinephone-pro-rk3399.h
|
||||||
|
@@ -0,0 +1,23 @@
|
||||||
|
+/* SPDX-License-Identifier: GPL-2.0+ */
|
||||||
|
+/*
|
||||||
|
+ * Copyright (C) 2016 Rockchip Electronics Co., Ltd
|
||||||
|
+ * Copyright (C) 2020 Peter Robinson <pbrobinson at gmail.com>
|
||||||
|
+ * Copyright (C) 2021 Martijn Braam <martijn@brixit.nl>
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+#ifndef __PINEPHONE_PRO_RK3399_H
|
||||||
|
+#define __PINEPHONE_PRO_RK3399_H
|
||||||
|
+
|
||||||
|
+#define ROCKCHIP_DEVICE_SETTINGS \
|
||||||
|
+ "stdin=serial,usbkbd\0" \
|
||||||
|
+ "stdout=serial,vidconsole\0" \
|
||||||
|
+ "stderr=serial,vidconsole\0"
|
||||||
|
+
|
||||||
|
+#include <configs/rk3399_common.h>
|
||||||
|
+
|
||||||
|
+#define SDRAM_BANK_SIZE (2UL << 30)
|
||||||
|
+
|
||||||
|
+#define CONFIG_USB_OHCI_NEW
|
||||||
|
+#define CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS 2
|
||||||
|
+
|
||||||
|
+#endif
|
107
rockchip-pbp-fixes.patch
Normal file
107
rockchip-pbp-fixes.patch
Normal file
@ -0,0 +1,107 @@
|
|||||||
|
From 2d9350c50a9659cc2a247cdea07f0eacffa3cb32 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Robinson <pbrobinson@gmail.com>
|
||||||
|
Date: Sun, 12 Jun 2022 14:44:44 +0100
|
||||||
|
Subject: [PATCH] rockchip: pinebook-pro: minor SPI flash fixes
|
||||||
|
|
||||||
|
Set a default offset for environment so it doesn't write it to
|
||||||
|
unexpected locations, drop unneeded mtd config option.
|
||||||
|
|
||||||
|
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
|
||||||
|
---
|
||||||
|
configs/pinebook-pro-rk3399_defconfig | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/configs/pinebook-pro-rk3399_defconfig b/configs/pinebook-pro-rk3399_defconfig
|
||||||
|
index 8ca1d0708f9..aaa52c6ea70 100644
|
||||||
|
--- a/configs/pinebook-pro-rk3399_defconfig
|
||||||
|
+++ b/configs/pinebook-pro-rk3399_defconfig
|
||||||
|
@@ -4,6 +4,7 @@
|
||||||
|
CONFIG_SYS_TEXT_BASE=0x00200000
|
||||||
|
CONFIG_NR_DRAM_BANKS=1
|
||||||
|
CONFIG_ENV_SIZE=0x8000
|
||||||
|
+CONFIG_ENV_OFFSET=0x3F8000
|
||||||
|
CONFIG_DEFAULT_DEVICE_TREE="rk3399-pinebook-pro"
|
||||||
|
CONFIG_ROCKCHIP_RK3399=y
|
||||||
|
CONFIG_TARGET_PINEBOOK_PRO_RK3399=y
|
||||||
|
@@ -21,7 +22,6 @@
|
||||||
|
# CONFIG_SPL_RAW_IMAGE_SUPPORT is not set
|
||||||
|
CONFIG_SPL_STACK_R=y
|
||||||
|
CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x10000
|
||||||
|
-CONFIG_SPL_MTD_SUPPORT=y
|
||||||
|
CONFIG_SPL_SPI_LOAD=y
|
||||||
|
CONFIG_TPL=y
|
||||||
|
CONFIG_CMD_BOOTZ=y
|
||||||
|
--
|
||||||
|
2.36.1
|
||||||
|
|
||||||
|
From 8bca90472e0d71e5344711b6f5fe8dc95e19af5a Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Robinson <pbrobinson@gmail.com>
|
||||||
|
Date: Sun, 12 Jun 2022 15:12:47 +0100
|
||||||
|
Subject: [PATCH] rockchip: pinebook-pro: sync PBP dtb to 5.18
|
||||||
|
|
||||||
|
Sync the pinebook pro to upstream 5.18, in particular this brings
|
||||||
|
brings in a fix so the DP is disabled so Linux will actually boot.
|
||||||
|
|
||||||
|
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
|
||||||
|
---
|
||||||
|
arch/arm/dts/rk3399-pinebook-pro.dts | 11 +++--------
|
||||||
|
1 file changed, 3 insertions(+), 8 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/dts/rk3399-pinebook-pro.dts b/arch/arm/dts/rk3399-pinebook-pro.dts
|
||||||
|
index 2b5f001ff4a..d6b68d77d63 100644
|
||||||
|
--- a/arch/arm/dts/rk3399-pinebook-pro.dts
|
||||||
|
+++ b/arch/arm/dts/rk3399-pinebook-pro.dts
|
||||||
|
@@ -17,6 +17,7 @@
|
||||||
|
/ {
|
||||||
|
model = "Pine64 Pinebook Pro";
|
||||||
|
compatible = "pine64,pinebook-pro", "rockchip,rk3399";
|
||||||
|
+ chassis-type = "laptop";
|
||||||
|
|
||||||
|
aliases {
|
||||||
|
mmc0 = &sdio0;
|
||||||
|
@@ -242,12 +243,12 @@
|
||||||
|
vdd_log: vdd-log {
|
||||||
|
compatible = "pwm-regulator";
|
||||||
|
pwms = <&pwm2 0 25000 1>;
|
||||||
|
+ pwm-supply = <&vcc_sysin>;
|
||||||
|
regulator-name = "vdd_log";
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
regulator-min-microvolt = <800000>;
|
||||||
|
regulator-max-microvolt = <1400000>;
|
||||||
|
- vin-supply = <&vcc_sysin>;
|
||||||
|
|
||||||
|
regulator-state-mem {
|
||||||
|
regulator-on-in-suspend;
|
||||||
|
@@ -385,10 +386,6 @@
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
-&cdn_dp {
|
||||||
|
- status = "okay";
|
||||||
|
-};
|
||||||
|
-
|
||||||
|
&cpu_b0 {
|
||||||
|
cpu-supply = <&vdd_cpu_b>;
|
||||||
|
};
|
||||||
|
@@ -475,8 +472,6 @@
|
||||||
|
vcc10-supply = <&vcc_sysin>;
|
||||||
|
vcc11-supply = <&vcc_sysin>;
|
||||||
|
vcc12-supply = <&vcc3v3_sys>;
|
||||||
|
- vcc13-supply = <&vcc_sysin>;
|
||||||
|
- vcc14-supply = <&vcc_sysin>;
|
||||||
|
|
||||||
|
regulators {
|
||||||
|
/* rk3399 center logic supply */
|
||||||
|
@@ -711,7 +706,7 @@
|
||||||
|
|
||||||
|
connector {
|
||||||
|
compatible = "usb-c-connector";
|
||||||
|
- data-role = "host";
|
||||||
|
+ data-role = "dual";
|
||||||
|
label = "USB-C";
|
||||||
|
op-sink-microwatt = <1000000>;
|
||||||
|
power-role = "dual";
|
||||||
|
--
|
||||||
|
2.36.1
|
||||||
|
|
@ -1,11 +0,0 @@
|
|||||||
--- u-boot-2020.10/common/spl/Kconfig.orig 2020-10-07 12:08:54.972632715 +0100
|
|
||||||
+++ u-boot-2020.10/common/spl/Kconfig 2020-10-07 12:08:59.100672506 +0100
|
|
||||||
@@ -324,7 +324,7 @@
|
|
||||||
default 0x200 if ARCH_SOCFPGA || ARCH_AT91
|
|
||||||
default 0x300 if ARCH_ZYNQ || ARCH_KEYSTONE || OMAP34XX || OMAP44XX || \
|
|
||||||
OMAP54XX || AM33XX || AM43XX || ARCH_K3
|
|
||||||
- default 0x4000 if ARCH_ROCKCHIP
|
|
||||||
+ default 0x200 if ARCH_ROCKCHIP
|
|
||||||
default 0x822 if TARGET_SIFIVE_FU540
|
|
||||||
help
|
|
||||||
Address on the MMC to load U-Boot from, when the MMC is being used
|
|
228
rpi-bcm2835_sdhost-firmware-managed-clock.patch
Normal file
228
rpi-bcm2835_sdhost-firmware-managed-clock.patch
Normal file
@ -0,0 +1,228 @@
|
|||||||
|
From f3a870bfa075fb880f5e018a0a5ae6f27ca8be49 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Vincent Fazio <vfazio@xes-inc.com>
|
||||||
|
Date: Mon, 13 Sep 2021 13:34:45 -0500
|
||||||
|
Subject: [PATCH] mmc: bcm2835-host: let firmware manage the clock
|
||||||
|
|
||||||
|
Newer firmware supports managing the sdhost clock divisor, so leverage
|
||||||
|
this feature if it is available.
|
||||||
|
|
||||||
|
SET_SDHOST_CLOCK is largely undocumented except for its usage within the
|
||||||
|
Linux kernel, which this change is based on.
|
||||||
|
|
||||||
|
https://github.com/raspberrypi/linux/commit/3cd16c39c718e2dda7885c4ed7a20118aed12524
|
||||||
|
|
||||||
|
Signed-off-by: Vincent Fazio <vfazio@xes-inc.com>
|
||||||
|
---
|
||||||
|
arch/arm/mach-bcm283x/include/mach/mbox.h | 18 ++++++++
|
||||||
|
arch/arm/mach-bcm283x/include/mach/msg.h | 10 +++++
|
||||||
|
arch/arm/mach-bcm283x/msg.c | 30 +++++++++++++
|
||||||
|
drivers/mmc/bcm2835_sdhost.c | 53 ++++++++++++++---------
|
||||||
|
4 files changed, 90 insertions(+), 21 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/mach-bcm283x/include/mach/mbox.h b/arch/arm/mach-bcm283x/include/mach/mbox.h
|
||||||
|
index 7dcac583cc4..9b1943fcfc4 100644
|
||||||
|
--- a/arch/arm/mach-bcm283x/include/mach/mbox.h
|
||||||
|
+++ b/arch/arm/mach-bcm283x/include/mach/mbox.h
|
||||||
|
@@ -252,6 +252,24 @@ struct bcm2835_mbox_tag_get_clock_rate {
|
||||||
|
} body;
|
||||||
|
};
|
||||||
|
|
||||||
|
+#define BCM2835_MBOX_TAG_SET_SDHOST_CLOCK 0x00038042
|
||||||
|
+
|
||||||
|
+struct bcm2835_mbox_tag_set_sdhost_clock {
|
||||||
|
+ struct bcm2835_mbox_tag_hdr tag_hdr;
|
||||||
|
+ union {
|
||||||
|
+ struct {
|
||||||
|
+ u32 rate_hz;
|
||||||
|
+ u32 rate_1;
|
||||||
|
+ u32 rate_2;
|
||||||
|
+ } req;
|
||||||
|
+ struct {
|
||||||
|
+ u32 rate_hz;
|
||||||
|
+ u32 rate_1;
|
||||||
|
+ u32 rate_2;
|
||||||
|
+ } resp;
|
||||||
|
+ } body;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
#define BCM2835_MBOX_TAG_ALLOCATE_BUFFER 0x00040001
|
||||||
|
|
||||||
|
struct bcm2835_mbox_tag_allocate_buffer {
|
||||||
|
diff --git a/arch/arm/mach-bcm283x/include/mach/msg.h b/arch/arm/mach-bcm283x/include/mach/msg.h
|
||||||
|
index e45c1bf010f..ab37abdb6c6 100644
|
||||||
|
--- a/arch/arm/mach-bcm283x/include/mach/msg.h
|
||||||
|
+++ b/arch/arm/mach-bcm283x/include/mach/msg.h
|
||||||
|
@@ -22,6 +22,16 @@ int bcm2835_power_on_module(u32 module);
|
||||||
|
*/
|
||||||
|
int bcm2835_get_mmc_clock(u32 clock_id);
|
||||||
|
|
||||||
|
+/**
|
||||||
|
+ * bcm2835_set_sdhost_clock() - determine if firmware controls sdhost cdiv
|
||||||
|
+ *
|
||||||
|
+ * @rate_hz: Input clock frequency
|
||||||
|
+ * @rate_1: Returns a clock frequency
|
||||||
|
+ * @rate_2: Returns a clock frequency
|
||||||
|
+ * @return 0 of OK, -EIO on error
|
||||||
|
+ */
|
||||||
|
+int bcm2835_set_sdhost_clock(u32 rate_hz, u32 *rate_1, u32 *rate_2);
|
||||||
|
+
|
||||||
|
/**
|
||||||
|
* bcm2835_get_video_size() - get the current display size
|
||||||
|
*
|
||||||
|
diff --git a/arch/arm/mach-bcm283x/msg.c b/arch/arm/mach-bcm283x/msg.c
|
||||||
|
index e2badfecb09..8c1c36a5f15 100644
|
||||||
|
--- a/arch/arm/mach-bcm283x/msg.c
|
||||||
|
+++ b/arch/arm/mach-bcm283x/msg.c
|
||||||
|
@@ -21,6 +21,12 @@ struct msg_get_clock_rate {
|
||||||
|
u32 end_tag;
|
||||||
|
};
|
||||||
|
|
||||||
|
+struct msg_set_sdhost_clock {
|
||||||
|
+ struct bcm2835_mbox_hdr hdr;
|
||||||
|
+ struct bcm2835_mbox_tag_set_sdhost_clock set_sdhost_clock;
|
||||||
|
+ u32 end_tag;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
struct msg_query {
|
||||||
|
struct bcm2835_mbox_hdr hdr;
|
||||||
|
struct bcm2835_mbox_tag_physical_w_h physical_w_h;
|
||||||
|
@@ -111,6 +117,30 @@ int bcm2835_get_mmc_clock(u32 clock_id)
|
||||||
|
return clock_rate;
|
||||||
|
}
|
||||||
|
|
||||||
|
+int bcm2835_set_sdhost_clock(u32 rate_hz, u32 *rate_1, u32 *rate_2)
|
||||||
|
+{
|
||||||
|
+ ALLOC_CACHE_ALIGN_BUFFER(struct msg_set_sdhost_clock, msg_sdhost_clk, 1);
|
||||||
|
+ int ret;
|
||||||
|
+
|
||||||
|
+ BCM2835_MBOX_INIT_HDR(msg_sdhost_clk);
|
||||||
|
+ BCM2835_MBOX_INIT_TAG(&msg_sdhost_clk->set_sdhost_clock, SET_SDHOST_CLOCK);
|
||||||
|
+
|
||||||
|
+ msg_sdhost_clk->set_sdhost_clock.body.req.rate_hz = rate_hz;
|
||||||
|
+ msg_sdhost_clk->set_sdhost_clock.body.req.rate_1 = *rate_1;
|
||||||
|
+ msg_sdhost_clk->set_sdhost_clock.body.req.rate_2 = *rate_2;
|
||||||
|
+
|
||||||
|
+ ret = bcm2835_mbox_call_prop(BCM2835_MBOX_PROP_CHAN, &msg_sdhost_clk->hdr);
|
||||||
|
+ if (ret) {
|
||||||
|
+ printf("bcm2835: Could not query sdhost clock rate\n");
|
||||||
|
+ return -EIO;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ *rate_1 = msg_sdhost_clk->set_sdhost_clock.body.resp.rate_1;
|
||||||
|
+ *rate_2 = msg_sdhost_clk->set_sdhost_clock.body.resp.rate_2;
|
||||||
|
+
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
int bcm2835_get_video_size(int *widthp, int *heightp)
|
||||||
|
{
|
||||||
|
ALLOC_CACHE_ALIGN_BUFFER(struct msg_query, msg_query, 1);
|
||||||
|
diff --git a/drivers/mmc/bcm2835_sdhost.c b/drivers/mmc/bcm2835_sdhost.c
|
||||||
|
index 894dbdd6861..3a9cd6f1eb2 100644
|
||||||
|
--- a/drivers/mmc/bcm2835_sdhost.c
|
||||||
|
+++ b/drivers/mmc/bcm2835_sdhost.c
|
||||||
|
@@ -181,6 +181,7 @@ struct bcm2835_host {
|
||||||
|
struct udevice *dev;
|
||||||
|
struct mmc *mmc;
|
||||||
|
struct bcm2835_plat *plat;
|
||||||
|
+ unsigned int firmware_sets_cdiv:1;
|
||||||
|
};
|
||||||
|
|
||||||
|
static void bcm2835_dumpregs(struct bcm2835_host *host)
|
||||||
|
@@ -233,7 +234,7 @@ static void bcm2835_reset_internal(struct bcm2835_host *host)
|
||||||
|
msleep(20);
|
||||||
|
host->clock = 0;
|
||||||
|
writel(host->hcfg, host->ioaddr + SDHCFG);
|
||||||
|
- writel(host->cdiv, host->ioaddr + SDCDIV);
|
||||||
|
+ writel(SDCDIV_MAX_CDIV, host->ioaddr + SDCDIV);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int bcm2835_wait_transfer_complete(struct bcm2835_host *host)
|
||||||
|
@@ -598,6 +599,7 @@ static int bcm2835_transmit(struct bcm2835_host *host)
|
||||||
|
static void bcm2835_set_clock(struct bcm2835_host *host, unsigned int clock)
|
||||||
|
{
|
||||||
|
int div;
|
||||||
|
+ u32 clock_rate[2] = { 0 };
|
||||||
|
|
||||||
|
/* The SDCDIV register has 11 bits, and holds (div - 2). But
|
||||||
|
* in data mode the max is 50MHz wihout a minimum, and only
|
||||||
|
@@ -620,26 +622,34 @@ static void bcm2835_set_clock(struct bcm2835_host *host, unsigned int clock)
|
||||||
|
* clock divisor at all times.
|
||||||
|
*/
|
||||||
|
|
||||||
|
- if (clock < 100000) {
|
||||||
|
- /* Can't stop the clock, but make it as slow as possible
|
||||||
|
- * to show willing
|
||||||
|
- */
|
||||||
|
- host->cdiv = SDCDIV_MAX_CDIV;
|
||||||
|
- writel(host->cdiv, host->ioaddr + SDCDIV);
|
||||||
|
- return;
|
||||||
|
- }
|
||||||
|
+ if (host->firmware_sets_cdiv) {
|
||||||
|
+ bcm2835_set_sdhost_clock(clock, &clock_rate[0], &clock_rate[1]);
|
||||||
|
+ clock = max(clock_rate[0], clock_rate[1]);
|
||||||
|
+ } else {
|
||||||
|
+ if (clock < 100000) {
|
||||||
|
+ /* Can't stop the clock, but make it as slow as possible
|
||||||
|
+ * to show willing
|
||||||
|
+ */
|
||||||
|
+ host->cdiv = SDCDIV_MAX_CDIV;
|
||||||
|
+ writel(host->cdiv, host->ioaddr + SDCDIV);
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
- div = host->max_clk / clock;
|
||||||
|
- if (div < 2)
|
||||||
|
- div = 2;
|
||||||
|
- if ((host->max_clk / div) > clock)
|
||||||
|
- div++;
|
||||||
|
- div -= 2;
|
||||||
|
+ div = host->max_clk / clock;
|
||||||
|
+ if (div < 2)
|
||||||
|
+ div = 2;
|
||||||
|
+ if ((host->max_clk / div) > clock)
|
||||||
|
+ div++;
|
||||||
|
+ div -= 2;
|
||||||
|
|
||||||
|
- if (div > SDCDIV_MAX_CDIV)
|
||||||
|
- div = SDCDIV_MAX_CDIV;
|
||||||
|
+ if (div > SDCDIV_MAX_CDIV)
|
||||||
|
+ div = SDCDIV_MAX_CDIV;
|
||||||
|
+
|
||||||
|
+ clock = host->max_clk / (div + 2);
|
||||||
|
+ host->cdiv = div;
|
||||||
|
+ writel(host->cdiv, host->ioaddr + SDCDIV);
|
||||||
|
+ }
|
||||||
|
|
||||||
|
- clock = host->max_clk / (div + 2);
|
||||||
|
host->mmc->clock = clock;
|
||||||
|
|
||||||
|
/* Calibrate some delays */
|
||||||
|
@@ -647,9 +657,6 @@ static void bcm2835_set_clock(struct bcm2835_host *host, unsigned int clock)
|
||||||
|
host->ns_per_fifo_word = (1000000000 / clock) *
|
||||||
|
((host->mmc->card_caps & MMC_MODE_4BIT) ? 8 : 32);
|
||||||
|
|
||||||
|
- host->cdiv = div;
|
||||||
|
- writel(host->cdiv, host->ioaddr + SDCDIV);
|
||||||
|
-
|
||||||
|
/* Set the timeout to 500ms */
|
||||||
|
writel(host->mmc->clock / 2, host->ioaddr + SDTOUT);
|
||||||
|
}
|
||||||
|
@@ -759,6 +766,7 @@ static int bcm2835_probe(struct udevice *dev)
|
||||||
|
struct bcm2835_host *host = dev_get_priv(dev);
|
||||||
|
struct mmc *mmc = mmc_get_mmc_dev(dev);
|
||||||
|
struct mmc_uclass_priv *upriv = dev_get_uclass_priv(dev);
|
||||||
|
+ u32 clock_rate[2] = { ~0 };
|
||||||
|
|
||||||
|
host->dev = dev;
|
||||||
|
host->mmc = mmc;
|
||||||
|
@@ -776,6 +784,9 @@ static int bcm2835_probe(struct udevice *dev)
|
||||||
|
|
||||||
|
host->max_clk = bcm2835_get_mmc_clock(BCM2835_MBOX_CLOCK_ID_CORE);
|
||||||
|
|
||||||
|
+ bcm2835_set_sdhost_clock(0, &clock_rate[0], &clock_rate[1]);
|
||||||
|
+ host->firmware_sets_cdiv = (clock_rate[0] != ~0);
|
||||||
|
+
|
||||||
|
bcm2835_add_host(host);
|
||||||
|
|
||||||
|
dev_dbg(dev, "%s -> OK\n", __func__);
|
77
rpi-fallback-to-max-clock-for-mmc.patch
Normal file
77
rpi-fallback-to-max-clock-for-mmc.patch
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
From 71ba043e5c5575f3d86536acade70dab6599489b Mon Sep 17 00:00:00 2001
|
||||||
|
From: Vincent Fazio <vfazio@xes-inc.com>
|
||||||
|
Date: Mon, 13 Sep 2021 11:22:30 -0500
|
||||||
|
Subject: [PATCH] arm: rpi: fallback to max clock rate for MMC clock
|
||||||
|
|
||||||
|
In rpi-firmware 25e2b597ebfb2495eab4816a276758dcc6ea21f1 and later,
|
||||||
|
the GET_CLOCK_RATE mailbox property was changed to return the last
|
||||||
|
value set by SET_CLOCK_RATE.
|
||||||
|
|
||||||
|
https://github.com/raspberrypi/firmware/issues/1619#issuecomment-917025502
|
||||||
|
|
||||||
|
U-Boot does not call SET_CLOCK_RATE so bcm2835_get_mmc_clock will
|
||||||
|
return zero and can cause degraded MMC performance.
|
||||||
|
|
||||||
|
Calling SET_CLOCK_RATE fixes the frequency of the clock to a specific
|
||||||
|
value and disables the firmware's clock scaling so is not an option.
|
||||||
|
|
||||||
|
Instead, fallback to GET_MAX_CLOCK_RATE in bcm2835_get_mmc_clock if
|
||||||
|
GET_CLOCK_RATE returns zero.
|
||||||
|
|
||||||
|
Signed-off-by: Vincent Fazio <vfazio@xes-inc.com>
|
||||||
|
---
|
||||||
|
arch/arm/mach-bcm283x/include/mach/mbox.h | 2 ++
|
||||||
|
arch/arm/mach-bcm283x/msg.c | 20 +++++++++++++++++++-
|
||||||
|
2 files changed, 21 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/mach-bcm283x/include/mach/mbox.h b/arch/arm/mach-bcm283x/include/mach/mbox.h
|
||||||
|
index 2ae2d3d97c3..7dcac583cc4 100644
|
||||||
|
--- a/arch/arm/mach-bcm283x/include/mach/mbox.h
|
||||||
|
+++ b/arch/arm/mach-bcm283x/include/mach/mbox.h
|
||||||
|
@@ -224,6 +224,8 @@ struct bcm2835_mbox_tag_set_power_state {
|
||||||
|
};
|
||||||
|
|
||||||
|
#define BCM2835_MBOX_TAG_GET_CLOCK_RATE 0x00030002
|
||||||
|
+#define BCM2835_MBOX_TAG_GET_MAX_CLOCK_RATE 0x00030004
|
||||||
|
+#define BCM2835_MBOX_TAG_GET_MIN_CLOCK_RATE 0x00030007
|
||||||
|
|
||||||
|
#define BCM2835_MBOX_CLOCK_ID_EMMC 1
|
||||||
|
#define BCM2835_MBOX_CLOCK_ID_UART 2
|
||||||
|
diff --git a/arch/arm/mach-bcm283x/msg.c b/arch/arm/mach-bcm283x/msg.c
|
||||||
|
index 347aece3cd8..e2badfecb09 100644
|
||||||
|
--- a/arch/arm/mach-bcm283x/msg.c
|
||||||
|
+++ b/arch/arm/mach-bcm283x/msg.c
|
||||||
|
@@ -75,6 +75,7 @@ int bcm2835_get_mmc_clock(u32 clock_id)
|
||||||
|
{
|
||||||
|
ALLOC_CACHE_ALIGN_BUFFER(struct msg_get_clock_rate, msg_clk, 1);
|
||||||
|
int ret;
|
||||||
|
+ u32 clock_rate = 0;
|
||||||
|
|
||||||
|
ret = bcm2835_power_on_module(BCM2835_MBOX_POWER_DEVID_SDHCI);
|
||||||
|
if (ret)
|
||||||
|
@@ -90,7 +91,24 @@ int bcm2835_get_mmc_clock(u32 clock_id)
|
||||||
|
return -EIO;
|
||||||
|
}
|
||||||
|
|
||||||
|
- return msg_clk->get_clock_rate.body.resp.rate_hz;
|
||||||
|
+ clock_rate = msg_clk->get_clock_rate.body.resp.rate_hz;
|
||||||
|
+
|
||||||
|
+ if (clock_rate == 0)
|
||||||
|
+ {
|
||||||
|
+ BCM2835_MBOX_INIT_HDR(msg_clk);
|
||||||
|
+ BCM2835_MBOX_INIT_TAG(&msg_clk->get_clock_rate, GET_MAX_CLOCK_RATE);
|
||||||
|
+ msg_clk->get_clock_rate.body.req.clock_id = clock_id;
|
||||||
|
+
|
||||||
|
+ ret = bcm2835_mbox_call_prop(BCM2835_MBOX_PROP_CHAN, &msg_clk->hdr);
|
||||||
|
+ if (ret) {
|
||||||
|
+ printf("bcm2835: Could not query max eMMC clock rate\n");
|
||||||
|
+ return -EIO;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ clock_rate = msg_clk->get_clock_rate.body.resp.rate_hz;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return clock_rate;
|
||||||
|
}
|
||||||
|
|
||||||
|
int bcm2835_get_video_size(int *widthp, int *heightp)
|
2
sources
2
sources
@ -1 +1 @@
|
|||||||
SHA512 (u-boot-2021.01-rc4.tar.bz2) = 6de2c60d02276f4eed31b5baf2d8239ad0af30c9d341339a4cd7fa0786068cb5faa1ab8bd0b4155e536962e1a4869906f60f1d2a1e50b0ed15e98c2e84d6a97b
|
SHA512 (u-boot-2022.04.tar.bz2) = 113056e542db049eea3b1d1ccbbe52c79539a2f9bb6129d284ec9200dcffec7bd5969821913a9899631575b80991c84ad01bc845b4bba614e42e54466d9f0d64
|
||||||
|
@ -1,222 +0,0 @@
|
|||||||
From patchwork Wed Nov 18 10:27:17 2020
|
|
||||||
Content-Type: text/plain; charset="utf-8"
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Transfer-Encoding: 7bit
|
|
||||||
X-Patchwork-Submitter: Icenowy Zheng <icenowy@aosc.io>
|
|
||||||
X-Patchwork-Id: 1402159
|
|
||||||
X-Patchwork-Delegate: andre.przywara@arm.com
|
|
||||||
Return-Path: <u-boot-bounces@lists.denx.de>
|
|
||||||
X-Original-To: incoming@patchwork.ozlabs.org
|
|
||||||
Delivered-To: patchwork-incoming@bilbo.ozlabs.org
|
|
||||||
Authentication-Results: ozlabs.org;
|
|
||||||
spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de
|
|
||||||
(client-ip=85.214.62.61; helo=phobos.denx.de;
|
|
||||||
envelope-from=u-boot-bounces@lists.denx.de; receiver=<UNKNOWN>)
|
|
||||||
Authentication-Results: ozlabs.org;
|
|
||||||
dmarc=none (p=none dis=none) header.from=aosc.io
|
|
||||||
Authentication-Results: ozlabs.org;
|
|
||||||
dkim=fail reason="signature verification failed" (1024-bit key;
|
|
||||||
unprotected) header.d=mymailcheap.com header.i=@mymailcheap.com
|
|
||||||
header.a=rsa-sha256 header.s=default header.b=YYrkSpBD;
|
|
||||||
dkim=fail reason="signature verification failed" (1024-bit key;
|
|
||||||
unprotected) header.d=aosc.io header.i=@aosc.io header.a=rsa-sha256
|
|
||||||
header.s=default header.b=o7lHQ4SZ;
|
|
||||||
dkim-atps=neutral
|
|
||||||
Received: from phobos.denx.de (phobos.denx.de [85.214.62.61])
|
|
||||||
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
|
|
||||||
key-exchange X25519 server-signature RSA-PSS (4096 bits))
|
|
||||||
(No client certificate requested)
|
|
||||||
by ozlabs.org (Postfix) with ESMTPS id 4CbfCp3G62z9s1l
|
|
||||||
for <incoming@patchwork.ozlabs.org>; Wed, 18 Nov 2020 21:28:22 +1100 (AEDT)
|
|
||||||
Received: from h2850616.stratoserver.net (localhost [IPv6:::1])
|
|
||||||
by phobos.denx.de (Postfix) with ESMTP id 00D6D82304;
|
|
||||||
Wed, 18 Nov 2020 11:28:16 +0100 (CET)
|
|
||||||
Authentication-Results: phobos.denx.de;
|
|
||||||
dmarc=none (p=none dis=none) header.from=aosc.io
|
|
||||||
Authentication-Results: phobos.denx.de;
|
|
||||||
spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de
|
|
||||||
Authentication-Results: phobos.denx.de;
|
|
||||||
dkim=fail reason="signature verification failed" (1024-bit key;
|
|
||||||
unprotected) header.d=mymailcheap.com header.i=@mymailcheap.com
|
|
||||||
header.b="YYrkSpBD";
|
|
||||||
dkim=fail reason="signature verification failed" (1024-bit key;
|
|
||||||
unprotected) header.d=aosc.io header.i=@aosc.io header.b="o7lHQ4SZ";
|
|
||||||
dkim-atps=neutral
|
|
||||||
Received: by phobos.denx.de (Postfix, from userid 109)
|
|
||||||
id 2E5B282309; Wed, 18 Nov 2020 11:28:11 +0100 (CET)
|
|
||||||
X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de
|
|
||||||
X-Spam-Level:
|
|
||||||
X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED,
|
|
||||||
DKIM_VALID,DKIM_VALID_AU,SPF_HELO_NONE,URIBL_BLOCKED autolearn=ham
|
|
||||||
autolearn_force=no version=3.4.2
|
|
||||||
Received: from relay1.mymailcheap.com (relay1.mymailcheap.com
|
|
||||||
[144.217.248.100])
|
|
||||||
(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))
|
|
||||||
(No client certificate requested)
|
|
||||||
by phobos.denx.de (Postfix) with ESMTPS id EC082808F1
|
|
||||||
for <u-boot@lists.denx.de>; Wed, 18 Nov 2020 11:28:05 +0100 (CET)
|
|
||||||
Authentication-Results: phobos.denx.de;
|
|
||||||
dmarc=none (p=none dis=none) header.from=aosc.io
|
|
||||||
Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=icenowy@aosc.io
|
|
||||||
Received: from filter2.mymailcheap.com (filter2.mymailcheap.com
|
|
||||||
[91.134.140.82])
|
|
||||||
by relay1.mymailcheap.com (Postfix) with ESMTPS id 18A423F201;
|
|
||||||
Wed, 18 Nov 2020 10:27:59 +0000 (UTC)
|
|
||||||
Received: from localhost (localhost [127.0.0.1])
|
|
||||||
by filter2.mymailcheap.com (Postfix) with ESMTP id 6377C2A7E9;
|
|
||||||
Wed, 18 Nov 2020 11:27:58 +0100 (CET)
|
|
||||||
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=mymailcheap.com;
|
|
||||||
s=default; t=1605695278;
|
|
||||||
bh=vA5tPn4fjpXJj/OQnRg+m708mrodc5u5TJSDVOSBnHo=;
|
|
||||||
h=From:To:Cc:Subject:Date:From;
|
|
||||||
b=YYrkSpBDGdpkLi16yGwNw7yMTXXW566rTdXX2RSRxCe6FylY99qiYDmZR+PZFqCX0
|
|
||||||
t3yDL0nO6zMKUvJVqZaTwsroyblAKNCaLz1AfCURNqCwohtJcIkDsegRYz9slzT9Qu
|
|
||||||
BQkTT6dosAIQFtAVrc48QBX38eHXMYreqkbHXz5g=
|
|
||||||
Received: from filter2.mymailcheap.com ([127.0.0.1])
|
|
||||||
by localhost (filter2.mymailcheap.com [127.0.0.1]) (amavisd-new, port 10024)
|
|
||||||
with ESMTP id eCMZCx2FVDgE; Wed, 18 Nov 2020 11:27:57 +0100 (CET)
|
|
||||||
Received: from mail20.mymailcheap.com (mail20.mymailcheap.com [51.83.111.147])
|
|
||||||
(using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits))
|
|
||||||
(No client certificate requested)
|
|
||||||
by filter2.mymailcheap.com (Postfix) with ESMTPS;
|
|
||||||
Wed, 18 Nov 2020 11:27:57 +0100 (CET)
|
|
||||||
Received: from [213.133.102.83] (ml.mymailcheap.com [213.133.102.83])
|
|
||||||
by mail20.mymailcheap.com (Postfix) with ESMTP id A597A400BE;
|
|
||||||
Wed, 18 Nov 2020 10:27:56 +0000 (UTC)
|
|
||||||
Authentication-Results: mail20.mymailcheap.com; dkim=pass (1024-bit key;
|
|
||||||
unprotected) header.d=aosc.io header.i=@aosc.io header.b="o7lHQ4SZ";
|
|
||||||
dkim-atps=neutral
|
|
||||||
AI-Spam-Status: Not processed
|
|
||||||
Received: from ice-e5v2.lan (unknown [59.41.160.51])
|
|
||||||
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
|
|
||||||
key-exchange ECDHE (P-256) server-signature RSA-PSS (2048 bits) server-digest
|
|
||||||
SHA256) (No client certificate requested)
|
|
||||||
by mail20.mymailcheap.com (Postfix) with ESMTPSA id 3B979400BE;
|
|
||||||
Wed, 18 Nov 2020 10:27:45 +0000 (UTC)
|
|
||||||
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=aosc.io; s=default;
|
|
||||||
t=1605695270; bh=vA5tPn4fjpXJj/OQnRg+m708mrodc5u5TJSDVOSBnHo=;
|
|
||||||
h=From:To:Cc:Subject:Date:From;
|
|
||||||
b=o7lHQ4SZ+kcNlSGrF+USzZxRQhtIEcZFQPjvsiu+MiK+TTjArUzo5bRKHH0I4ZcDM
|
|
||||||
a4Ywg6IcctT99QEZGbRIHqhvjH6/Kvj4lWM77Bb0DrlHXfEdOj3LC7KiAF1vVGFfPI
|
|
||||||
0oTEacf71O2OWPmQBqEH/uaV/IiGI4rZvgWiMPkk=
|
|
||||||
From: Icenowy Zheng <icenowy@aosc.io>
|
|
||||||
To: Jagan Teki <jagan@amarulasolutions.com>,
|
|
||||||
Andre Przywara <andre.przywara@arm.com>,
|
|
||||||
Hans de Goede <hdegoede@redhat.com>
|
|
||||||
Cc: u-boot@lists.denx.de, linux-sunxi@googlegroups.com,
|
|
||||||
Icenowy Zheng <icenowy@aosc.io>
|
|
||||||
Subject: [PATCH v3] sunxi: add PineCube board
|
|
||||||
Date: Wed, 18 Nov 2020 18:27:17 +0800
|
|
||||||
Message-Id: <20201118102717.635129-1-icenowy@aosc.io>
|
|
||||||
X-Mailer: git-send-email 2.28.0
|
|
||||||
MIME-Version: 1.0
|
|
||||||
X-Rspamd-Queue-Id: A597A400BE
|
|
||||||
X-Spamd-Result: default: False [4.90 / 20.00]; RCVD_VIA_SMTP_AUTH(0.00)[];
|
|
||||||
ARC_NA(0.00)[]; R_DKIM_ALLOW(0.00)[aosc.io:s=default];
|
|
||||||
RECEIVED_SPAMHAUS_PBL(0.00)[59.41.160.51:received];
|
|
||||||
FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[];
|
|
||||||
R_MISSING_CHARSET(2.50)[]; TO_MATCH_ENVRCPT_ALL(0.00)[];
|
|
||||||
MIME_GOOD(-0.10)[text/plain]; DMARC_NA(0.00)[aosc.io];
|
|
||||||
BROKEN_CONTENT_TYPE(1.50)[]; R_SPF_SOFTFAIL(0.00)[~all];
|
|
||||||
RCPT_COUNT_FIVE(0.00)[6]; ML_SERVERS(-3.10)[213.133.102.83];
|
|
||||||
DKIM_TRACE(0.00)[aosc.io:+]; MID_CONTAINS_FROM(1.00)[];
|
|
||||||
RCVD_NO_TLS_LAST(0.10)[]; FROM_EQ_ENVFROM(0.00)[];
|
|
||||||
MIME_TRACE(0.00)[0:+];
|
|
||||||
ASN(0.00)[asn:24940, ipnet:213.133.96.0/19, country:DE];
|
|
||||||
RCVD_COUNT_TWO(0.00)[2];
|
|
||||||
HFILTER_HELO_BAREIP(3.00)[213.133.102.83,1]
|
|
||||||
X-Rspamd-Server: mail20.mymailcheap.com
|
|
||||||
X-BeenThere: u-boot@lists.denx.de
|
|
||||||
X-Mailman-Version: 2.1.34
|
|
||||||
Precedence: list
|
|
||||||
List-Id: U-Boot discussion <u-boot.lists.denx.de>
|
|
||||||
List-Unsubscribe: <https://lists.denx.de/options/u-boot>,
|
|
||||||
<mailto:u-boot-request@lists.denx.de?subject=unsubscribe>
|
|
||||||
List-Archive: <https://lists.denx.de/pipermail/u-boot/>
|
|
||||||
List-Post: <mailto:u-boot@lists.denx.de>
|
|
||||||
List-Help: <mailto:u-boot-request@lists.denx.de?subject=help>
|
|
||||||
List-Subscribe: <https://lists.denx.de/listinfo/u-boot>,
|
|
||||||
<mailto:u-boot-request@lists.denx.de?subject=subscribe>
|
|
||||||
Errors-To: u-boot-bounces@lists.denx.de
|
|
||||||
Sender: "U-Boot" <u-boot-bounces@lists.denx.de>
|
|
||||||
X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de
|
|
||||||
X-Virus-Status: Clean
|
|
||||||
|
|
||||||
PineCube is an IP camera development kit released by Pine64.
|
|
||||||
|
|
||||||
It comes with the following compoents:
|
|
||||||
|
|
||||||
- A mainboard with Sochip S3 SoC, a 16MByte SPI Flash, AXP209 PMIC,
|
|
||||||
a power-only microUSB connector, a USB Type-A connector, a 10/100Mbps
|
|
||||||
Ethernet port and FPC connectors for camera and daughter board.
|
|
||||||
- An OV5640-based camera module which is connected to the parallel CSI
|
|
||||||
bus of the mainboard.
|
|
||||||
- A daughterboard with several buttons, a SD slot, some IR LEDs, a
|
|
||||||
microphone and a speaker connector.
|
|
||||||
|
|
||||||
As the device tree is synchronized in a previous commit, just add it to
|
|
||||||
Makefile, create a new MAINTAINER item and provide a defconfig.
|
|
||||||
|
|
||||||
Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
|
|
||||||
Reviewed-by: Andre Przywara <andre.przywara@arm.com>
|
|
||||||
---
|
|
||||||
Changes since v2:
|
|
||||||
- Add Makefile reference to DT.
|
|
||||||
Changes since v1:
|
|
||||||
- Dropped LDO3 quirk.
|
|
||||||
|
|
||||||
arch/arm/dts/Makefile | 1 +
|
|
||||||
board/sunxi/MAINTAINERS | 5 +++++
|
|
||||||
configs/pinecube_defconfig | 15 +++++++++++++++
|
|
||||||
3 files changed, 21 insertions(+)
|
|
||||||
create mode 100644 configs/pinecube_defconfig
|
|
||||||
|
|
||||||
diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
|
|
||||||
index 7d1a369845..e6993733b0 100644
|
|
||||||
--- a/arch/arm/dts/Makefile
|
|
||||||
+++ b/arch/arm/dts/Makefile
|
|
||||||
@@ -587,6 +587,7 @@ dtb-$(CONFIG_MACH_SUN8I_R40) += \
|
|
||||||
sun8i-r40-bananapi-m2-ultra.dtb \
|
|
||||||
sun8i-v40-bananapi-m2-berry.dtb
|
|
||||||
dtb-$(CONFIG_MACH_SUN8I_V3S) += \
|
|
||||||
+ sun8i-s3-pinecube.dtb \
|
|
||||||
sun8i-v3s-licheepi-zero.dtb
|
|
||||||
dtb-$(CONFIG_MACH_SUN50I_H5) += \
|
|
||||||
sun50i-h5-bananapi-m2-plus.dtb \
|
|
||||||
diff --git a/board/sunxi/MAINTAINERS b/board/sunxi/MAINTAINERS
|
|
||||||
index d3755ae41a..735801ae1d 100644
|
|
||||||
--- a/board/sunxi/MAINTAINERS
|
|
||||||
+++ b/board/sunxi/MAINTAINERS
|
|
||||||
@@ -440,6 +440,11 @@ M: Vasily Khoruzhick <anarsoul@gmail.com>
|
|
||||||
S: Maintained
|
|
||||||
F: configs/pinebook_defconfig
|
|
||||||
|
|
||||||
+PINECUBE BOARD:
|
|
||||||
+M: Icenowy Zheng <icenowy@aosc.io>
|
|
||||||
+S: Maintained
|
|
||||||
+F: configs/pinecube_defconfig
|
|
||||||
+
|
|
||||||
PINE64 BOARDS
|
|
||||||
M: Andre Przywara <andre.przywara@arm.com>
|
|
||||||
S: Maintained
|
|
||||||
diff --git a/configs/pinecube_defconfig b/configs/pinecube_defconfig
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000000..a8c404f6b1
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/configs/pinecube_defconfig
|
|
||||||
@@ -0,0 +1,15 @@
|
|
||||||
+CONFIG_ARM=y
|
|
||||||
+CONFIG_ARCH_SUNXI=y
|
|
||||||
+CONFIG_SPL=y
|
|
||||||
+CONFIG_MACH_SUN8I_V3S=y
|
|
||||||
+CONFIG_SUNXI_DRAM_DDR3_1333=y
|
|
||||||
+CONFIG_DRAM_CLK=504
|
|
||||||
+CONFIG_DRAM_ODT_EN=y
|
|
||||||
+CONFIG_I2C0_ENABLE=y
|
|
||||||
+CONFIG_DEFAULT_DEVICE_TREE="sun8i-s3-pinecube"
|
|
||||||
+CONFIG_SPL_I2C_SUPPORT=y
|
|
||||||
+# CONFIG_NETDEVICES is not set
|
|
||||||
+CONFIG_AXP209_POWER=y
|
|
||||||
+CONFIG_AXP_DCDC2_VOLT=1250
|
|
||||||
+CONFIG_AXP_DCDC3_VOLT=3300
|
|
||||||
+CONFIG_CONS_INDEX=3
|
|
345
uboot-tools.spec
345
uboot-tools.spec
@ -1,65 +1,49 @@
|
|||||||
%global candidate rc4
|
#global candidate rc0
|
||||||
|
%bcond_without toolsonly
|
||||||
|
|
||||||
Name: uboot-tools
|
Name: uboot-tools
|
||||||
Version: 2021.01
|
Version: 2022.04
|
||||||
Release: 0.4%{?candidate:.%{candidate}}%{?dist}
|
Release: 2%{?candidate:.%{candidate}}%{?dist}
|
||||||
Summary: U-Boot utilities
|
Summary: U-Boot utilities
|
||||||
License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+
|
License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+
|
||||||
URL: http://www.denx.de/wiki/U-Boot
|
URL: http://www.denx.de/wiki/U-Boot
|
||||||
|
|
||||||
Source0: ftp://ftp.denx.de/pub/u-boot/u-boot-%{version}%{?candidate:-%{candidate}}.tar.bz2
|
ExcludeArch: s390x
|
||||||
|
Source0: https://ftp.denx.de/pub/u-boot/u-boot-%{version}%{?candidate:-%{candidate}}.tar.bz2
|
||||||
Source1: arm-boards
|
Source1: arm-boards
|
||||||
Source2: arm-chromebooks
|
Source2: aarch64-boards
|
||||||
Source3: aarch64-boards
|
|
||||||
Source4: aarch64-chromebooks
|
|
||||||
|
|
||||||
# Fedoraisms patches
|
# Fedoraisms patches
|
||||||
# Needed to find DT on boot partition that's not the first partition
|
# Needed to find DT on boot partition that's not the first partition
|
||||||
Patch1: uefi-distro-load-FDT-from-any-partition-on-boot-device.patch
|
Patch1: uefi-distro-load-FDT-from-any-partition-on-boot-device.patch
|
||||||
# Needed due to issues with shim
|
|
||||||
Patch2: uefi-use-Fedora-specific-path-name.patch
|
|
||||||
# RPi - uses RPI firmware device tree for HAT support
|
|
||||||
Patch3: rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch
|
|
||||||
# Ajust the U-Boot offsets in SPL to take less space
|
|
||||||
#Patch4: rockchip-spl-u-boot-itb-offset.patch
|
|
||||||
|
|
||||||
# Board fixes and enablement
|
# Board fixes and enablement
|
||||||
Patch5: Raspberry-Pi-400-Compute-Module-4-support.patch
|
# RPi - uses RPI firmware device tree for HAT support
|
||||||
Patch6: rng-Add-iProc-RNG200-driver.patch
|
Patch3: rpi-Enable-using-the-DT-provided-by-the-Raspberry-Pi.patch
|
||||||
# AllWinner improvements
|
Patch4: rpi-fallback-to-max-clock-for-mmc.patch
|
||||||
Patch10: AllWinner-PineTab.patch
|
Patch5: rpi-bcm2835_sdhost-firmware-managed-clock.patch
|
||||||
Patch11: sunxi-add-PineCube-board.patch
|
|
||||||
Patch12: 0001-Fixes-for-AllWinner-ethernet-network-interfaces.patch
|
|
||||||
# TI fixes
|
|
||||||
Patch13: 0001-Fix-BeagleAI-detection.patch
|
|
||||||
# Rockchips improvements
|
# Rockchips improvements
|
||||||
Patch14: arm-rk3399-enable-rng-on-rock960-and-firefly3399.patch
|
Patch7: rockchip-Add-initial-support-for-the-PinePhone-Pro.patch
|
||||||
Patch15: rk3399-Pinebook-pro-EDP-support.patch
|
Patch8: rockchip-pbp-fixes.patch
|
||||||
|
Patch10: CVE-2022-30767.patch
|
||||||
|
Patch11: zlib-Port-fix-for-CVE-2018-25032-to-U-Boot.patch
|
||||||
|
|
||||||
BuildRequires: bc
|
BuildRequires: bc
|
||||||
|
BuildRequires: bison
|
||||||
BuildRequires: dtc
|
BuildRequires: dtc
|
||||||
BuildRequires: make
|
BuildRequires: flex
|
||||||
# Requirements for building on el7
|
|
||||||
%if 0%{?rhel} == 7
|
|
||||||
BuildRequires: devtoolset-7-build
|
|
||||||
BuildRequires: devtoolset-7-binutils
|
|
||||||
BuildRequires: devtoolset-7-gcc
|
|
||||||
BuildRequires: python2-devel
|
|
||||||
BuildRequires: python2-setuptools
|
|
||||||
BuildRequires: python2-libfdt
|
|
||||||
%else
|
|
||||||
BuildRequires: gcc
|
BuildRequires: gcc
|
||||||
|
BuildRequires: gnutls-devel
|
||||||
|
BuildRequires: libuuid-devel
|
||||||
|
BuildRequires: make
|
||||||
|
BuildRequires: ncurses-devel
|
||||||
|
BuildRequires: openssl-devel
|
||||||
|
BuildRequires: perl-interpreter
|
||||||
BuildRequires: python3-devel
|
BuildRequires: python3-devel
|
||||||
BuildRequires: python3-setuptools
|
BuildRequires: python3-setuptools
|
||||||
BuildRequires: python3-libfdt
|
BuildRequires: python3-libfdt
|
||||||
%endif
|
|
||||||
BuildRequires: flex bison
|
|
||||||
BuildRequires: openssl-devel
|
|
||||||
BuildRequires: SDL-devel
|
BuildRequires: SDL-devel
|
||||||
BuildRequires: swig
|
BuildRequires: swig
|
||||||
%ifarch %{arm} aarch64
|
|
||||||
BuildRequires: vboot-utils
|
|
||||||
%endif
|
|
||||||
%ifarch aarch64
|
%ifarch aarch64
|
||||||
BuildRequires: arm-trusted-firmware-armv8
|
BuildRequires: arm-trusted-firmware-armv8
|
||||||
%endif
|
%endif
|
||||||
@ -69,6 +53,7 @@ Requires: dtc
|
|||||||
This package contains a few U-Boot utilities - mkimage for creating boot images
|
This package contains a few U-Boot utilities - mkimage for creating boot images
|
||||||
and fw_printenv/fw_setenv for manipulating the boot environment variables.
|
and fw_printenv/fw_setenv for manipulating the boot environment variables.
|
||||||
|
|
||||||
|
%if %{with toolsonly}
|
||||||
%ifarch aarch64
|
%ifarch aarch64
|
||||||
%package -n uboot-images-armv8
|
%package -n uboot-images-armv8
|
||||||
Summary: U-Boot firmware images for aarch64 boards
|
Summary: U-Boot firmware images for aarch64 boards
|
||||||
@ -86,128 +71,157 @@ BuildArch: noarch
|
|||||||
%description -n uboot-images-armv7
|
%description -n uboot-images-armv7
|
||||||
U-Boot firmware binaries for armv7 boards
|
U-Boot firmware binaries for armv7 boards
|
||||||
%endif
|
%endif
|
||||||
|
%endif
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
%autosetup -p1 -n u-boot-%{version}%{?candidate:-%{candidate}}
|
%autosetup -p1 -n u-boot-%{version}%{?candidate:-%{candidate}}
|
||||||
|
|
||||||
cp %SOURCE1 %SOURCE2 %SOURCE3 %SOURCE4 .
|
cp %SOURCE1 %SOURCE2 .
|
||||||
|
|
||||||
%build
|
%build
|
||||||
mkdir builds
|
mkdir builds
|
||||||
|
|
||||||
%if 0%{?rhel} == 7
|
%make_build HOSTCC="gcc $RPM_OPT_FLAGS" CROSS_COMPILE="" tools-only_defconfig O=builds/
|
||||||
#Enabling DTS for .el7
|
%make_build HOSTCC="gcc $RPM_OPT_FLAGS" CROSS_COMPILE="" tools-all O=builds/
|
||||||
%{?enable_devtoolset7:%{enable_devtoolset7}}
|
|
||||||
%endif
|
%if %{with toolsonly}
|
||||||
|
# U-Boot device firmwares don't currently support LTO
|
||||||
|
%define _lto_cflags %{nil}
|
||||||
|
|
||||||
%ifarch aarch64 %{arm}
|
%ifarch aarch64 %{arm}
|
||||||
for board in $(cat %{_arch}-boards)
|
for board in $(cat %{_arch}-boards)
|
||||||
do
|
do
|
||||||
echo "Building board: $board"
|
echo "Building board: $board"
|
||||||
mkdir builds/$(echo $board)/
|
mkdir builds/$(echo $board)/
|
||||||
|
|
||||||
# ATF selection, needs improving, suggestions of ATF SoC to Board matrix welcome
|
# ATF selection, needs improving, suggestions of ATF SoC to Board matrix welcome
|
||||||
sun50i=(a64-olinuxino amarula_a64_relic bananapi_m2_plus_h5 bananapi_m64 libretech_all_h3_cc_h5 nanopi_a64 nanopi_neo2 nanopi_neo_plus2 orangepi_pc2 orangepi_prime orangepi_win orangepi_zero_plus orangepi_zero_plus2 pine64-lts pine64_plus pinebook pinephone pinetab sopine_baseboard teres_i)
|
sun50i=(a64-olinuxino amarula_a64_relic bananapi_m2_plus_h5 bananapi_m64 libretech_all_h3_cc_h5 nanopi_a64 nanopi_neo2 nanopi_neo_plus2 orangepi_pc2 orangepi_prime orangepi_win orangepi_zero_plus orangepi_zero_plus2 pine64-lts pine64_plus pinebook pinephone pinetab sopine_baseboard teres_i)
|
||||||
if [[ " ${sun50i[*]} " == *" $board "* ]]; then
|
if [[ " ${sun50i[*]} " == *" $board "* ]]; then
|
||||||
echo "Board: $board using sun50i_a64"
|
echo "Board: $board using sun50i_a64"
|
||||||
cp /usr/share/arm-trusted-firmware/sun50i_a64/* builds/$(echo $board)/
|
cp /usr/share/arm-trusted-firmware/sun50i_a64/* builds/$(echo $board)/
|
||||||
fi
|
fi
|
||||||
sun50h6=(orangepi_lite2 orangepi_one_plus pine_h64)
|
sun50h6=(beelink_gs1 orangepi_3 orangepi_lite2 orangepi_one_plus orangepi_zero2 pine_h64 tanix_tx6)
|
||||||
if [[ " ${sun50h6[*]} " == *" $board "* ]]; then
|
if [[ " ${sun50h6[*]} " == *" $board "* ]]; then
|
||||||
echo "Board: $board using sun50i_h6"
|
echo "Board: $board using sun50i_h6"
|
||||||
cp /usr/share/arm-trusted-firmware/sun50i_h6/* builds/$(echo $board)/
|
cp /usr/share/arm-trusted-firmware/sun50i_h6/* builds/$(echo $board)/
|
||||||
fi
|
fi
|
||||||
rk3328=(evb-rk3328 rock64-rk3328 rock-pi-e-rk3328 roc-cc-rk3328)
|
rk3328=(evb-rk3328 nanopi-r2s-rk3328 rock64-rk3328 rock-pi-e-rk3328 roc-cc-rk3328)
|
||||||
if [[ " ${rk3328[*]} " == *" $board "* ]]; then
|
if [[ " ${rk3328[*]} " == *" $board "* ]]; then
|
||||||
echo "Board: $board using rk3328"
|
echo "Board: $board using rk3328"
|
||||||
cp /usr/share/arm-trusted-firmware/rk3328/* builds/$(echo $board)/
|
cp /usr/share/arm-trusted-firmware/rk3328/* builds/$(echo $board)/
|
||||||
fi
|
fi
|
||||||
rk3399=(evb-rk3399 ficus-rk3399 firefly-rk3399 khadas-edge-captain-rk3399 khadas-edge-rk3399 khadas-edge-v-rk3399 nanopc-t4-rk3399 nanopi-m4-2gb-rk3399 nanopi-m4-rk3399 nanopi-neo4-rk3399 orangepi-rk3399 pinebook-pro-rk3399 puma-rk3399 rock960-rk3399 rock-pi-4c-rk3399 rock-pi-4-rk3399 rock-pi-n10-rk3399pro rockpro64-rk3399 roc-pc-mezzanine-rk3399 roc-pc-rk3399)
|
rk3399=(evb-rk3399 ficus-rk3399 firefly-rk3399 khadas-edge-captain-rk3399 khadas-edge-rk3399 khadas-edge-v-rk3399 leez-rk3399 nanopc-t4-rk3399 nanopi-m4-2gb-rk3399 nanopi-m4b-rk3399 nanopi-m4-rk3399 nanopi-neo4-rk3399 nanopi-r4s-rk3399 orangepi-rk3399 pinebook-pro-rk3399 pinephone-pro-rk3399 puma-rk3399 rock960-rk3399 rock-pi-4c-rk3399 rock-pi-4-rk3399 rock-pi-n10-rk3399pro rockpro64-rk3399 roc-pc-mezzanine-rk3399 roc-pc-rk3399)
|
||||||
if [[ " ${rk3399[*]} " == *" $board "* ]]; then
|
if [[ " ${rk3399[*]} " == *" $board "* ]]; then
|
||||||
echo "Board: $board using rk3399"
|
echo "Board: $board using rk3399"
|
||||||
cp /usr/share/arm-trusted-firmware/rk3399/* builds/$(echo $board)/
|
cp /usr/share/arm-trusted-firmware/rk3399/* builds/$(echo $board)/
|
||||||
fi
|
fi
|
||||||
# End ATF
|
# End ATF
|
||||||
|
|
||||||
make $(echo $board)_defconfig O=builds/$(echo $board)/
|
make $(echo $board)_defconfig O=builds/$(echo $board)/
|
||||||
%make_build HOSTCC="gcc $RPM_OPT_FLAGS" CROSS_COMPILE="" O=builds/$(echo $board)/
|
%make_build HOSTCC="gcc $RPM_OPT_FLAGS" CROSS_COMPILE="" O=builds/$(echo $board)/
|
||||||
|
|
||||||
|
# build spi images for rockchip boards with SPI flash
|
||||||
|
rkspi=(evb-rk3399 khadas-edge-captain-rk3399 khadas-edge-rk3399 khadas-edge-v-rk3399 nanopc-t4-rk3399 pinebook-pro-rk3399 pinephone-pro-rk3399 rockpro64-rk3399 roc-pc-mezzanine-rk3399 roc-pc-rk3399)
|
||||||
|
if [[ " ${rkspi[*]} " == *" $board "* ]]; then
|
||||||
|
echo "Board: $board with SPI flash"
|
||||||
|
builds/$(echo $board)/tools/mkimage -n rk3399 -T rkspi -d builds/$(echo $board)/tpl/u-boot-tpl.bin:builds/$(echo $board)/spl/u-boot-spl.bin builds/$(echo $board)/idbloader.spi
|
||||||
|
fi
|
||||||
|
# build spi, and uart images for mvebu boards
|
||||||
|
# mvebu=(clearfog helios4 turris_omnia)
|
||||||
|
if [[ " ${mvebu[*]} " == *" $board "* ]]; then
|
||||||
|
for target in spi uart
|
||||||
|
do
|
||||||
|
echo "Board: $board Target: $target"
|
||||||
|
sed -i -e '/CONFIG_MVEBU_SPL_BOOT_DEVICE_/d' configs/$(echo $board)_defconfig
|
||||||
|
echo CONFIG_MVEBU_SPL_BOOT_DEVICE_${target^^}=y >> configs/$(echo $board)_defconfig
|
||||||
|
make $(echo $board)_defconfig O=builds/$(echo $board-$target)/
|
||||||
|
%make_build HOSTCC="gcc $RPM_OPT_FLAGS" CROSS_COMPILE="" O=builds/$(echo $board-$target)/
|
||||||
|
done
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
%endif
|
%endif
|
||||||
|
%endif
|
||||||
%make_build HOSTCC="gcc $RPM_OPT_FLAGS" CROSS_COMPILE="" tools-only_defconfig O=builds/
|
|
||||||
%make_build HOSTCC="gcc $RPM_OPT_FLAGS" CROSS_COMPILE="" tools-all O=builds/
|
|
||||||
|
|
||||||
%install
|
%install
|
||||||
mkdir -p $RPM_BUILD_ROOT%{_bindir}
|
mkdir -p %{buildroot}%{_bindir}
|
||||||
mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}
|
mkdir -p %{buildroot}%{_mandir}/man1
|
||||||
mkdir -p $RPM_BUILD_ROOT%{_mandir}/man1
|
mkdir -p %{buildroot}%{_datadir}/uboot/
|
||||||
mkdir -p $RPM_BUILD_ROOT%{_datadir}/uboot/
|
|
||||||
|
|
||||||
|
%if %{with toolsonly}
|
||||||
%ifarch aarch64
|
%ifarch aarch64
|
||||||
for board in $(cat %{_arch}-boards)
|
for board in $(ls builds)
|
||||||
do
|
do
|
||||||
mkdir -p $RPM_BUILD_ROOT%{_datadir}/uboot/$(echo $board)/
|
mkdir -p %{buildroot}%{_datadir}/uboot/$(echo $board)/
|
||||||
for file in u-boot.bin u-boot.dtb u-boot.img u-boot-dtb.img u-boot.itb u-boot-sunxi-with-spl.bin u-boot-rockchip.bin idbloader.img spl/boot.bin spl/sunxi-spl.bin
|
for file in u-boot.bin u-boot.dtb u-boot.img u-boot-dtb.img u-boot.itb u-boot-sunxi-with-spl.bin u-boot-rockchip.bin idbloader.img idbloader.spi spl/boot.bin spl/sunxi-spl.bin
|
||||||
do
|
do
|
||||||
if [ -f builds/$(echo $board)/$(echo $file) ]; then
|
if [ -f builds/$(echo $board)/$(echo $file) ]; then
|
||||||
install -p -m 0644 builds/$(echo $board)/$(echo $file) $RPM_BUILD_ROOT%{_datadir}/uboot/$(echo $board)/
|
install -p -m 0644 builds/$(echo $board)/$(echo $file) %{buildroot}%{_datadir}/uboot/$(echo $board)/
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%ifarch %{arm}
|
%ifarch %{arm}
|
||||||
for board in $(cat %{_arch}-boards)
|
for board in $(ls builds)
|
||||||
do
|
do
|
||||||
mkdir -p $RPM_BUILD_ROOT%{_datadir}/uboot/$(echo $board)/
|
mkdir -p %{buildroot}%{_datadir}/uboot/$(echo $board)/
|
||||||
for file in MLO SPL spl/arndale-spl.bin spl/origen-spl.bin spl/*spl.bin u-boot.bin u-boot.dtb u-boot-dtb-tegra.bin u-boot.img u-boot.imx u-boot-spl.kwb u-boot-rockchip.bin u-boot-sunxi-with-spl.bin spl/boot.bin
|
for file in MLO SPL spl/arndale-spl.bin spl/origen-spl.bin spl/*spl.bin u-boot.bin u-boot.dtb u-boot-dtb-tegra.bin u-boot.img u-boot.imx u-boot-spl.kwb u-boot-rockchip.bin u-boot-sunxi-with-spl.bin spl/boot.bin
|
||||||
do
|
do
|
||||||
if [ -f builds/$(echo $board)/$(echo $file) ]; then
|
if [ -f builds/$(echo $board)/$(echo $file) ]; then
|
||||||
install -p -m 0644 builds/$(echo $board)/$(echo $file) $RPM_BUILD_ROOT%{_datadir}/uboot/$(echo $board)/
|
install -p -m 0644 builds/$(echo $board)/$(echo $file) %{buildroot}%{_datadir}/uboot/$(echo $board)/
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
done
|
|
||||||
|
|
||||||
# Bit of a hack to remove binaries we don't use as they're large
|
|
||||||
for board in $(cat %{_arch}-boards)
|
|
||||||
do
|
|
||||||
if [ -f $RPM_BUILD_ROOT%{_datadir}/uboot/$(echo $board)/u-boot-sunxi-with-spl.bin ]; then
|
|
||||||
rm -f $RPM_BUILD_ROOT%{_datadir}/uboot/$(echo $board)/u-boot.*
|
|
||||||
fi
|
|
||||||
if [ -f $RPM_BUILD_ROOT%{_datadir}/uboot/$(echo $board)/MLO ]; then
|
|
||||||
rm -f $RPM_BUILD_ROOT%{_datadir}/uboot/$(echo $board)/u-boot.bin
|
|
||||||
fi
|
|
||||||
if [ -f $RPM_BUILD_ROOT%{_datadir}/uboot/$(echo $board)/SPL ]; then
|
|
||||||
rm -f $RPM_BUILD_ROOT%{_datadir}/uboot/$(echo $board)/u-boot.bin
|
|
||||||
fi
|
|
||||||
if [ -f $RPM_BUILD_ROOT%{_datadir}/uboot/$(echo $board)/u-boot.imx ]; then
|
|
||||||
rm -f $RPM_BUILD_ROOT%{_datadir}/uboot/$(echo $board)/u-boot.bin
|
|
||||||
fi
|
|
||||||
done
|
done
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
for tool in bmp_logo dumpimage env/fw_printenv fit_check_sign fit_info gdb/gdbcont gdb/gdbsend gen_eth_addr gen_ethaddr_crc img2srec mkenvimage mkimage mksunxiboot ncb proftool sunxi-spl-image-builder ubsha1 xway-swap-bytes
|
# Bit of a hack to remove binaries we don't use as they're large
|
||||||
|
%ifarch aarch64 %{arm}
|
||||||
|
for board in $(ls builds)
|
||||||
do
|
do
|
||||||
install -p -m 0755 builds/tools/$tool $RPM_BUILD_ROOT%{_bindir}
|
rm -f %{buildroot}%{_datadir}/uboot/$(echo $board)/u-boot.dtb
|
||||||
|
if [ -f %{buildroot}%{_datadir}/uboot/$(echo $board)/u-boot-sunxi-with-spl.bin ]; then
|
||||||
|
rm -f %{buildroot}%{_datadir}/uboot/$(echo $board)/u-boot{,-dtb}.*
|
||||||
|
fi
|
||||||
|
if [ -f %{buildroot}%{_datadir}/uboot/$(echo $board)/MLO ]; then
|
||||||
|
rm -f %{buildroot}%{_datadir}/uboot/$(echo $board)/u-boot.bin
|
||||||
|
fi
|
||||||
|
if [ -f %{buildroot}%{_datadir}/uboot/$(echo $board)/SPL ]; then
|
||||||
|
rm -f %{buildroot}%{_datadir}/uboot/$(echo $board)/u-boot.bin
|
||||||
|
fi
|
||||||
|
if [ -f %{buildroot}%{_datadir}/uboot/$(echo $board)/u-boot.imx ]; then
|
||||||
|
rm -f %{buildroot}%{_datadir}/uboot/$(echo $board)/u-boot.bin
|
||||||
|
fi
|
||||||
|
if [ -f %{buildroot}%{_datadir}/uboot/$(echo $board)/u-boot-spl.kwb ]; then
|
||||||
|
rm -f %{buildroot}%{_datadir}/uboot/$(echo $board)/u-boot.*
|
||||||
|
rm -f %{buildroot}%{_datadir}/uboot/$(echo $board)/u-boot-spl.bin
|
||||||
|
fi
|
||||||
|
if [ -f %{buildroot}%{_datadir}/uboot/$(echo $board)/idbloader.img ]; then
|
||||||
|
rm -f %{buildroot}%{_datadir}/uboot/$(echo $board)/u-boot.bin
|
||||||
|
rm -f %{buildroot}%{_datadir}/uboot/$(echo $board)/u-boot{,-dtb}.img
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
install -p -m 0644 doc/mkimage.1 $RPM_BUILD_ROOT%{_mandir}/man1
|
%endif
|
||||||
|
%endif
|
||||||
|
|
||||||
install -p -m 0755 builds/tools/env/fw_printenv $RPM_BUILD_ROOT%{_bindir}
|
for tool in bmp_logo dumpimage env/fw_printenv fit_check_sign fit_info gdb/gdbcont gdb/gdbsend gen_eth_addr gen_ethaddr_crc img2srec mkenvimage mkimage mksunxiboot ncb proftool sunxi-spl-image-builder ubsha1 xway-swap-bytes kwboot
|
||||||
( cd $RPM_BUILD_ROOT%{_bindir}; ln -sf fw_printenv fw_setenv )
|
do
|
||||||
|
install -p -m 0755 builds/tools/$tool %{buildroot}%{_bindir}
|
||||||
|
done
|
||||||
|
install -p -m 0644 doc/mkimage.1 %{buildroot}%{_mandir}/man1
|
||||||
|
|
||||||
install -p -m 0644 tools/env/fw_env.config $RPM_BUILD_ROOT%{_sysconfdir}
|
install -p -m 0755 builds/tools/env/fw_printenv %{buildroot}%{_bindir}
|
||||||
|
( cd %{buildroot}%{_bindir}; ln -sf fw_printenv fw_setenv )
|
||||||
|
|
||||||
# Copy sone useful docs over
|
# Copy some useful docs over
|
||||||
mkdir -p builds/docs
|
mkdir -p builds/docs
|
||||||
cp -p board/hisilicon/hikey/README builds/docs/README.hikey
|
cp -p board/hisilicon/hikey/README builds/docs/README.hikey
|
||||||
cp -p board/hisilicon/hikey/README builds/docs/README.hikey
|
|
||||||
cp -p board/Marvell/db-88f6820-gp/README builds/docs/README.mvebu-db-88f6820
|
cp -p board/Marvell/db-88f6820-gp/README builds/docs/README.mvebu-db-88f6820
|
||||||
cp -p board/rockchip/evb_rk3399/README builds/docs/README.evb_rk3399
|
cp -p board/rockchip/evb_rk3399/README builds/docs/README.evb_rk3399
|
||||||
cp -p board/solidrun/clearfog/README builds/docs/README.clearfog
|
cp -p board/solidrun/clearfog/README builds/docs/README.clearfog
|
||||||
cp -p board/solidrun/mx6cuboxi/README builds/docs/README.mx6cuboxi
|
cp -p board/solidrun/mx6cuboxi/README builds/docs/README.mx6cuboxi
|
||||||
cp -p board/sunxi/README.sunxi64 builds/docs/README.sunxi64
|
cp -p board/sunxi/README.sunxi64 builds/docs/README.sunxi64
|
||||||
cp -p board/sunxi/README.nand builds/docs/README.sunxi-nand
|
cp -p board/sunxi/README.nand builds/docs/README.sunxi-nand
|
||||||
cp -p board/ti/am335x/README builds/docs/README.am335x
|
|
||||||
cp -p board/ti/omap5_uevm/README builds/docs/README.omap5_uevm
|
cp -p board/ti/omap5_uevm/README builds/docs/README.omap5_uevm
|
||||||
cp -p board/udoo/README builds/docs/README.udoo
|
cp -p board/udoo/README builds/docs/README.udoo
|
||||||
cp -p board/wandboard/README builds/docs/README.wandboard
|
cp -p board/wandboard/README builds/docs/README.wandboard
|
||||||
@ -215,15 +229,14 @@ cp -p board/warp/README builds/docs/README.warp
|
|||||||
cp -p board/warp7/README builds/docs/README.warp7
|
cp -p board/warp7/README builds/docs/README.warp7
|
||||||
|
|
||||||
%files
|
%files
|
||||||
%doc README doc/README.kwbimage doc/README.distro doc/README.gpt
|
%doc README doc/README.kwbimage doc/develop/distro.rst doc/README.gpt
|
||||||
%doc doc/README.odroid doc/README.rockchip doc/uefi doc/uImage.FIT doc/arch/arm64.rst
|
%doc doc/README.odroid doc/README.rockchip doc/develop/uefi doc/uImage.FIT doc/arch/arm64.rst
|
||||||
%doc doc/README.chromium builds/docs/*
|
%doc builds/docs/* doc/board/amlogic/ doc/board/rockchip/ doc/board/ti/am335x_evm.rst
|
||||||
%doc doc/board/amlogic/ doc/board/rockchip/
|
|
||||||
%{_bindir}/*
|
%{_bindir}/*
|
||||||
%{_mandir}/man1/mkimage.1*
|
%{_mandir}/man1/mkimage.1*
|
||||||
%dir %{_datadir}/uboot/
|
%dir %{_datadir}/uboot/
|
||||||
%config(noreplace) %{_sysconfdir}/fw_env.config
|
|
||||||
|
|
||||||
|
%if %{with toolsonly}
|
||||||
%ifarch aarch64
|
%ifarch aarch64
|
||||||
%files -n uboot-images-armv8
|
%files -n uboot-images-armv8
|
||||||
%{_datadir}/uboot/*
|
%{_datadir}/uboot/*
|
||||||
@ -233,8 +246,154 @@ cp -p board/warp7/README builds/docs/README.warp7
|
|||||||
%files -n uboot-images-armv7
|
%files -n uboot-images-armv7
|
||||||
%{_datadir}/uboot/*
|
%{_datadir}/uboot/*
|
||||||
%endif
|
%endif
|
||||||
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Sun Jun 12 2022 Peter Robinson <pbrobinson@fedoraproject.org> - 2022.04-2
|
||||||
|
- Fixes for Pine64 Pinebook Pro
|
||||||
|
- Fix for CVE-2022-30767 (NFSv2)
|
||||||
|
- Fix for CVE-2018-25032 (zlib)
|
||||||
|
|
||||||
|
* Mon Apr 04 2022 Peter Robinson <pbrobinson@fedoraproject.org> - 2022.04-1
|
||||||
|
- Update to 2022.04 GA
|
||||||
|
|
||||||
|
* Mon Mar 28 2022 Peter Robinson <pbrobinson@fedoraproject.org> - 2022.04-0.4.rc5
|
||||||
|
- Update to 2022.04 RC5
|
||||||
|
|
||||||
|
* Tue Mar 08 2022 Peter Robinson <pbrobinson@fedoraproject.org> - 2022.04-0.3.rc3
|
||||||
|
- Update to 2022.04 RC3
|
||||||
|
- Enable new Rockchip devices
|
||||||
|
|
||||||
|
* Tue Feb 15 2022 Peter Robinson <pbrobinson@fedoraproject.org> - 2022.04-0.2.rc2
|
||||||
|
- Update to 2022.04 RC2
|
||||||
|
|
||||||
|
* Wed Feb 02 2022 Peter Robinson <pbrobinson@fedoraproject.org> - 2022.04-0.1.rc1
|
||||||
|
- Update to 2022.04 RC1
|
||||||
|
|
||||||
|
* Sat Jan 22 2022 Fedora Release Engineering <releng@fedoraproject.org> - 2022.01-2
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
|
||||||
|
|
||||||
|
* Mon Jan 10 2022 Peter Robinson <pbrobinson@fedoraproject.org> - 2022.01-1
|
||||||
|
- Update to 2022.01
|
||||||
|
|
||||||
|
* Wed Jan 05 2022 Peter Robinson <pbrobinson@fedoraproject.org> - 2022.01-0.3.rc4
|
||||||
|
- Upstream fixes for PHY and UEFI
|
||||||
|
|
||||||
|
* Mon Dec 20 2021 Peter Robinson <pbrobinson@fedoraproject.org> - 2022.01-0.2.rc4
|
||||||
|
- Update to 2022.01 RC4
|
||||||
|
|
||||||
|
* Mon Nov 15 2021 Peter Robinson <pbrobinson@fedoraproject.org> - 2022.01-0.1.rc2
|
||||||
|
- Update to 2022.01 RC2
|
||||||
|
|
||||||
|
* Mon Nov 15 2021 Peter Robinson <pbrobinson@fedoraproject.org> - 2021.10-3
|
||||||
|
- Fixes for rk3399 devices
|
||||||
|
|
||||||
|
* Thu Oct 14 2021 Peter Robinson <pbrobinson@fedoraproject.org> - 2021.10-2
|
||||||
|
- Fix booting from MMC for Rockchip 3399 (rhbz #2014182)
|
||||||
|
- Enable new rk3399 devices (Leez, NanoPi-M4B, NanoPi-4S, NanoPi-T4) (rhbz #2009126)
|
||||||
|
|
||||||
|
* Mon Oct 04 2021 Peter Robinson <pbrobinson@fedoraproject.org> - 2021.10-1
|
||||||
|
- Update to 2021.10
|
||||||
|
|
||||||
|
* Mon Sep 27 2021 Peter Robinson <pbrobinson@fedoraproject.org> - 2021.10-0.7.rc5
|
||||||
|
- Update to 2021.10 RC5
|
||||||
|
|
||||||
|
* Wed Sep 15 2021 Peter Robinson <pbrobinson@fedoraproject.org> - 2021.10-0.6.rc4
|
||||||
|
- Update to 2021.10 RC4
|
||||||
|
- Proposed fix for RPi MMC clock issue
|
||||||
|
|
||||||
|
* Tue Sep 14 2021 Sahana Prasad <sahana@redhat.com> - 2021.10-0.6.rc3
|
||||||
|
- Rebuilt with OpenSSL 3.0.0
|
||||||
|
|
||||||
|
* Mon Aug 30 2021 Peter Robinson <pbrobinson@fedoraproject.org> - 2021.10-0.5.rc3
|
||||||
|
- Update to 2021.10 RC3
|
||||||
|
|
||||||
|
* Tue Aug 24 2021 Peter Robinson <pbrobinson@fedoraproject.org> - 2021.10-0.4.rc2
|
||||||
|
- Fix for Raspberry Pi firmware properties
|
||||||
|
|
||||||
|
* Mon Aug 23 2021 Peter Robinson <pbrobinson@fedoraproject.org> - 2021.10-0.3.rc2
|
||||||
|
- Fix for rockchip SPI
|
||||||
|
|
||||||
|
* Mon Aug 16 2021 Peter Robinson <pbrobinson@fedoraproject.org> - 2021.10-0.2.rc2
|
||||||
|
- Update to 2021.10 RC2
|
||||||
|
|
||||||
|
* Sun Aug 08 2021 Peter Robinson <pbrobinson@fedoraproject.org> - 2021.10-0.1.rc1
|
||||||
|
- Update to 2021.10 RC1
|
||||||
|
|
||||||
|
* Thu Jul 22 2021 Peter Robinson <pbrobinson@fedoraproject.org> - 2021.07-2
|
||||||
|
- Fix regression for Rockchip devices running firmware from SPI flash
|
||||||
|
|
||||||
|
* Mon Jul 05 2021 Peter Robinson <pbrobinson@fedoraproject.org> - 2021.07-1
|
||||||
|
- Update to 2021.07 GA
|
||||||
|
|
||||||
|
* Mon Jun 28 2021 Peter Robinson <pbrobinson@fedoraproject.org> - 2021.07-0.6.rc5
|
||||||
|
- Update to 2021.07 RC5
|
||||||
|
- Build SPI fash images for ROC-PC-RK3399
|
||||||
|
|
||||||
|
* Mon Jun 07 2021 Peter Robinson <pbrobinson@fedoraproject.org> - 2021.07-0.5.rc4
|
||||||
|
- Update to 2021.07 RC4
|
||||||
|
|
||||||
|
* Sat Jun 05 2021 Peter Robinson <pbrobinson@fedoraproject.org> - 2021.07-0.4.rc3
|
||||||
|
- Fix AllWinner devices booting from mSD/MMC
|
||||||
|
|
||||||
|
* Tue May 25 2021 Peter Robinson <pbrobinson@fedoraproject.org> - 2021.07-0.3.rc3
|
||||||
|
- Update to 2021.07 RC3
|
||||||
|
- Build against ATF 2.5 GA
|
||||||
|
|
||||||
|
* Thu May 13 2021 Peter Robinson <pbrobinson@fedoraproject.org> - 2021.07-0.2.rc2
|
||||||
|
- Build against new ATF 2.5-rc1
|
||||||
|
|
||||||
|
* Mon May 10 2021 Peter Robinson <pbrobinson@fedoraproject.org> - 2021.07-0.1.rc2
|
||||||
|
- Update to 2021.07 RC2
|
||||||
|
|
||||||
|
* Wed Apr 28 2021 Peter Robinson <pbrobinson@fedoraproject.org> - 2021.04-3
|
||||||
|
- Upstream fix for console regression (rhbz 1946278)
|
||||||
|
- Fix for fallback.efi crash (rhbz 1733817)
|
||||||
|
|
||||||
|
* Wed Apr 21 2021 Peter Robinson <pbrobinson@fedoraproject.org> - 2021.04-2
|
||||||
|
- Revert keyboard console regression change (rhbz 1946278)
|
||||||
|
|
||||||
|
* Sun Apr 18 2021 Peter Robinson <pbrobinson@fedoraproject.org> - 2021.04-1
|
||||||
|
- Update to 2021.04 GA
|
||||||
|
- Fix DTB load check (rhbz 1946278)
|
||||||
|
- Build Rockchip SPI support as idbloader.spi
|
||||||
|
- Fixes for Rockchip devices
|
||||||
|
- Build Turris Omnia for MMC/SPI/UART
|
||||||
|
|
||||||
|
* Wed Mar 17 2021 Peter Robinson <pbrobinson@fedoraproject.org> - 2021.04-0.6.rc4
|
||||||
|
- Update to 2021.04 RC4
|
||||||
|
- Move to upstream fix for SMP on RPi3B and RPi3B+
|
||||||
|
|
||||||
|
* Sat Mar 13 2021 Peter Robinson <pbrobinson@fedoraproject.org> - 2021.04-0.5.rc3
|
||||||
|
- Fix for SMP on RPi3B and RPi3B+
|
||||||
|
- Initial support for Pinephone 3Gb edition
|
||||||
|
|
||||||
|
* Mon Mar 08 2021 Peter Robinson <pbrobinson@fedoraproject.org> - 2021.04-0.4.rc3
|
||||||
|
- Update to 2021.04 RC3
|
||||||
|
|
||||||
|
* Tue Feb 16 2021 Peter Robinson <pbrobinson@fedoraproject.org> - 2021.04-0.3.rc2
|
||||||
|
- Update to 2021.04 RC2
|
||||||
|
|
||||||
|
* Mon Feb 15 2021 Dennis Gilmore <dennis@ausil.us>
|
||||||
|
- build spi and uart images in addition to mmc for helios4 and clearfog
|
||||||
|
|
||||||
|
* Wed Feb 10 2021 Peter Robinson <pbrobinson@fedoraproject.org> - 2021.04-0.2.rc1
|
||||||
|
- Fixes for network issues on some Allwinner devices
|
||||||
|
|
||||||
|
* Mon Feb 01 2021 Peter Robinson <pbrobinson@fedoraproject.org> - 2021.04-0.1.rc1
|
||||||
|
- Update to 2021.04 RC1
|
||||||
|
- Add new upstream devices
|
||||||
|
|
||||||
|
* Wed Jan 27 2021 Fedora Release Engineering <releng@fedoraproject.org> - 2021.01-2
|
||||||
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
|
||||||
|
|
||||||
|
* Mon Jan 11 2021 Peter Robinson <pbrobinson@fedoraproject.org> - 2021.01-1
|
||||||
|
- Update to 2021.01 GA
|
||||||
|
- Updates for Raspberry Pi 4 Series of devices
|
||||||
|
|
||||||
|
* Tue Jan 5 2021 Peter Robinson <pbrobinson@fedoraproject.org> - 2021.01-0.5.rc5
|
||||||
|
- Update to 2021.01 RC5
|
||||||
|
|
||||||
* Sun Dec 27 2020 Peter Robinson <pbrobinson@fedoraproject.org> - 2021.01-0.4.rc4
|
* Sun Dec 27 2020 Peter Robinson <pbrobinson@fedoraproject.org> - 2021.01-0.4.rc4
|
||||||
- Update to 2021.01 RC4
|
- Update to 2021.01 RC4
|
||||||
- Latest RPi-400/CM4 support patch
|
- Latest RPi-400/CM4 support patch
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
From cc3700b5c65494547308df395fe63166ff48a1e3 Mon Sep 17 00:00:00 2001
|
From fd3434c754b3b8dddb345352a2434b6b8445343a Mon Sep 17 00:00:00 2001
|
||||||
From: Peter Robinson <pbrobinson@gmail.com>
|
From: Peter Robinson <pbrobinson@gmail.com>
|
||||||
Date: Tue, 24 Nov 2020 10:35:48 +0000
|
Date: Sun, 18 Apr 2021 14:05:45 +0100
|
||||||
Subject: [PATCH 1/2] distro: load FDT from any partition on boot device
|
Subject: [PATCH] distro: load FDT from any partition on boot device
|
||||||
|
|
||||||
In the EFI_LOADER boot path, we were only checking the FAT partition
|
In the EFI_LOADER boot path, we were only checking the FAT partition
|
||||||
containing the EFI payload for dtb files. But this is somewhat of a
|
containing the EFI payload for dtb files. But this is somewhat of a
|
||||||
@ -22,17 +22,19 @@ knows) and SoC/board specific ${fdtfile} (which grub does not know).
|
|||||||
Signed-off-by: Rob Clark <robdclark@gmail.com>
|
Signed-off-by: Rob Clark <robdclark@gmail.com>
|
||||||
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
|
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
|
||||||
---
|
---
|
||||||
include/config_distro_bootcmd.h | 33 +++++++++++++++++++++++----------
|
include/config_distro_bootcmd.h | 35 ++++++++++++++++++++++-----------
|
||||||
1 file changed, 23 insertions(+), 10 deletions(-)
|
1 file changed, 23 insertions(+), 12 deletions(-)
|
||||||
|
|
||||||
diff --git a/include/config_distro_bootcmd.h b/include/config_distro_bootcmd.h
|
diff --git a/include/config_distro_bootcmd.h b/include/config_distro_bootcmd.h
|
||||||
index ff29ef5a905..769477cd80e 100644
|
index 2627c2a6a5..eadd1080b3 100644
|
||||||
--- a/include/config_distro_bootcmd.h
|
--- a/include/config_distro_bootcmd.h
|
||||||
+++ b/include/config_distro_bootcmd.h
|
+++ b/include/config_distro_bootcmd.h
|
||||||
@@ -142,24 +142,37 @@
|
@@ -148,26 +148,37 @@
|
||||||
|
"fi\0" \
|
||||||
|
\
|
||||||
"load_efi_dtb=" \
|
"load_efi_dtb=" \
|
||||||
"load ${devtype} ${devnum}:${distro_bootpart} " \
|
- "load ${devtype} ${devnum}:${distro_bootpart} " \
|
||||||
"${fdt_addr_r} ${prefix}${efi_fdtfile}\0" \
|
- "${fdt_addr_r} ${prefix}${efi_fdtfile}\0" \
|
||||||
+ "load ${devtype} ${devnum}:${dtb_devp} " \
|
+ "load ${devtype} ${devnum}:${dtb_devp} " \
|
||||||
+ "${fdt_addr_r} ${prefix}${efi_fdtfile} && " \
|
+ "${fdt_addr_r} ${prefix}${efi_fdtfile} && " \
|
||||||
+ "run boot_efi_binary\0" \
|
+ "run boot_efi_binary\0" \
|
||||||
@ -66,7 +68,7 @@ index ff29ef5a905..769477cd80e 100644
|
|||||||
+ "fi;" \
|
+ "fi;" \
|
||||||
+ "done; " \
|
+ "done; " \
|
||||||
+ "done; " \
|
+ "done; " \
|
||||||
+ "run boot_efi_bootmgr\0" \
|
+ "run boot_efi_binary\0" \
|
||||||
+ "scan_dev_for_efi=" \
|
+ "scan_dev_for_efi=" \
|
||||||
"if test -e ${devtype} ${devnum}:${distro_bootpart} " \
|
"if test -e ${devtype} ${devnum}:${distro_bootpart} " \
|
||||||
"efi/boot/"BOOTEFI_NAME"; then " \
|
"efi/boot/"BOOTEFI_NAME"; then " \
|
||||||
@ -78,5 +80,5 @@ index ff29ef5a905..769477cd80e 100644
|
|||||||
"fi; " \
|
"fi; " \
|
||||||
"setenv efi_fdtfile\0"
|
"setenv efi_fdtfile\0"
|
||||||
--
|
--
|
||||||
2.29.2
|
2.31.1
|
||||||
|
|
||||||
|
@ -1,50 +0,0 @@
|
|||||||
From d8fcb72d566b0ebca1613555ac13c0798817487e Mon Sep 17 00:00:00 2001
|
|
||||||
From: Peter Robinson <pbrobinson@gmail.com>
|
|
||||||
Date: Tue, 24 Nov 2020 10:37:28 +0000
|
|
||||||
Subject: [PATCH 2/2] use Fedora specific EFI path/name
|
|
||||||
|
|
||||||
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
|
|
||||||
---
|
|
||||||
include/config_distro_bootcmd.h | 10 +++++-----
|
|
||||||
1 file changed, 5 insertions(+), 5 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/include/config_distro_bootcmd.h b/include/config_distro_bootcmd.h
|
|
||||||
index 769477cd80e..22ce3685758 100644
|
|
||||||
--- a/include/config_distro_bootcmd.h
|
|
||||||
+++ b/include/config_distro_bootcmd.h
|
|
||||||
@@ -92,9 +92,9 @@
|
|
||||||
|
|
||||||
#ifdef CONFIG_EFI_LOADER
|
|
||||||
#if defined(CONFIG_ARM64)
|
|
||||||
-#define BOOTEFI_NAME "bootaa64.efi"
|
|
||||||
+#define BOOTEFI_NAME "grubaa64.efi"
|
|
||||||
#elif defined(CONFIG_ARM)
|
|
||||||
-#define BOOTEFI_NAME "bootarm.efi"
|
|
||||||
+#define BOOTEFI_NAME "grubarm.efi"
|
|
||||||
#elif defined(CONFIG_X86_RUN_32BIT)
|
|
||||||
#define BOOTEFI_NAME "bootia32.efi"
|
|
||||||
#elif defined(CONFIG_X86_RUN_64BIT)
|
|
||||||
@@ -132,7 +132,7 @@
|
|
||||||
\
|
|
||||||
"boot_efi_binary=" \
|
|
||||||
"load ${devtype} ${devnum}:${distro_bootpart} " \
|
|
||||||
- "${kernel_addr_r} efi/boot/"BOOTEFI_NAME"; " \
|
|
||||||
+ "${kernel_addr_r} efi/fedora/"BOOTEFI_NAME"; " \
|
|
||||||
"if fdt addr ${fdt_addr_r}; then " \
|
|
||||||
"bootefi ${kernel_addr_r} ${fdt_addr_r};" \
|
|
||||||
"else " \
|
|
||||||
@@ -169,9 +169,9 @@
|
|
||||||
"run boot_efi_bootmgr\0" \
|
|
||||||
"scan_dev_for_efi=" \
|
|
||||||
"if test -e ${devtype} ${devnum}:${distro_bootpart} " \
|
|
||||||
- "efi/boot/"BOOTEFI_NAME"; then " \
|
|
||||||
+ "efi/fedora/"BOOTEFI_NAME"; then " \
|
|
||||||
"echo Found EFI removable media binary " \
|
|
||||||
- "efi/boot/"BOOTEFI_NAME"; " \
|
|
||||||
+ "efi/fedora/"BOOTEFI_NAME"; " \
|
|
||||||
"run scan_dev_for_dtb; " \
|
|
||||||
"echo EFI LOAD FAILED: continuing...; " \
|
|
||||||
"fi; " \
|
|
||||||
--
|
|
||||||
2.29.2
|
|
||||||
|
|
@ -1,115 +0,0 @@
|
|||||||
From a49845f198af088c4e5e0019edbf519344d78c97 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Peter Robinson <pbrobinson@gmail.com>
|
|
||||||
Date: Tue, 4 Dec 2018 15:29:14 +0000
|
|
||||||
Subject: [PATCH] usb kbd fixes
|
|
||||||
|
|
||||||
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
|
|
||||||
---
|
|
||||||
common/usb_kbd.c | 66 +++++++++++++++++++++++++++++++++++------------
|
|
||||||
include/console.h | 2 --
|
|
||||||
2 files changed, 50 insertions(+), 18 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/common/usb_kbd.c b/common/usb_kbd.c
|
|
||||||
index 020f0d4117f..47674ce4458 100644
|
|
||||||
--- a/common/usb_kbd.c
|
|
||||||
+++ b/common/usb_kbd.c
|
|
||||||
@@ -518,25 +518,59 @@ static int probe_usb_keyboard(struct usb_device *dev)
|
|
||||||
return error;
|
|
||||||
|
|
||||||
stdinname = env_get("stdin");
|
|
||||||
-#if CONFIG_IS_ENABLED(CONSOLE_MUX)
|
|
||||||
- error = iomux_doenv(stdin, stdinname);
|
|
||||||
- if (error)
|
|
||||||
- return error;
|
|
||||||
-#else
|
|
||||||
- /* Check if this is the standard input device. */
|
|
||||||
- if (strcmp(stdinname, DEVNAME))
|
|
||||||
- return 1;
|
|
||||||
+ if (CONFIG_IS_ENABLED(CONSOLE_MUX)) {
|
|
||||||
+ char *devname = DEVNAME;
|
|
||||||
+ char *newstdin = NULL;
|
|
||||||
+ /*
|
|
||||||
+ * stdin might not be set yet.. either way, with console-
|
|
||||||
+ * mux the sensible thing to do is add ourselves to the
|
|
||||||
+ * list of stdio devices:
|
|
||||||
+ */
|
|
||||||
+ if (stdinname && !strstr(stdinname, DEVNAME)) {
|
|
||||||
+ newstdin = malloc(strlen(stdinname) +
|
|
||||||
+ strlen(","DEVNAME) + 1);
|
|
||||||
+ sprintf(newstdin, "%s,"DEVNAME, stdinname);
|
|
||||||
+ stdinname = newstdin;
|
|
||||||
+ } else if (!stdinname) {
|
|
||||||
+ stdinname = devname;
|
|
||||||
+ }
|
|
||||||
+ error = iomux_doenv(stdin, stdinname);
|
|
||||||
+ free(newstdin);
|
|
||||||
+ if (error)
|
|
||||||
+ goto unregister_stdio;
|
|
||||||
+ } else {
|
|
||||||
+ /* Check if this is the standard input device. */
|
|
||||||
+ if (strcmp(stdinname, DEVNAME)) {
|
|
||||||
+ error = -1;
|
|
||||||
+ goto unregister_stdio;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
- /* Reassign the console */
|
|
||||||
- if (overwrite_console())
|
|
||||||
- return 1;
|
|
||||||
+ /* Reassign the console */
|
|
||||||
+ if (overwrite_console()) {
|
|
||||||
+ error = -1;
|
|
||||||
+ goto unregister_stdio;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
- error = console_assign(stdin, DEVNAME);
|
|
||||||
- if (error)
|
|
||||||
- return error;
|
|
||||||
-#endif
|
|
||||||
+ error = console_assign(stdin, DEVNAME);
|
|
||||||
+ if (error)
|
|
||||||
+ goto unregister_stdio;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
|
|
||||||
+unregister_stdio:
|
|
||||||
+ /*
|
|
||||||
+ * If probe fails, the device will be removed.. leaving dangling
|
|
||||||
+ * pointers if the stdio device is not unregistered. If u-boot
|
|
||||||
+ * is built without stdio_deregister(), just pretend to succeed
|
|
||||||
+ * in order to avoid dangling pointers.
|
|
||||||
+ */
|
|
||||||
+#if CONFIG_IS_ENABLED(SYS_STDIO_DEREGISTER)
|
|
||||||
+ stdio_deregister(DEVNAME, 1);
|
|
||||||
+ return error;
|
|
||||||
+#else
|
|
||||||
return 0;
|
|
||||||
+#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
#if !CONFIG_IS_ENABLED(DM_USB)
|
|
||||||
@@ -642,7 +676,7 @@ static int usb_kbd_remove(struct udevice *dev)
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
err:
|
|
||||||
- printf("%s: warning, ret=%d", __func__, ret);
|
|
||||||
+ printf("%s: warning, ret=%d\n", __func__, ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
diff --git a/include/console.h b/include/console.h
|
|
||||||
index e935c601f12..6382ec8e0d6 100644
|
|
||||||
--- a/include/console.h
|
|
||||||
+++ b/include/console.h
|
|
||||||
@@ -56,8 +56,6 @@ int console_announce_r(void);
|
|
||||||
/*
|
|
||||||
* CONSOLE multiplexing.
|
|
||||||
*/
|
|
||||||
-#ifdef CONFIG_CONSOLE_MUX
|
|
||||||
#include <iomux.h>
|
|
||||||
-#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
--
|
|
||||||
2.19.2
|
|
||||||
|
|
382
zlib-Port-fix-for-CVE-2018-25032-to-U-Boot.patch
Normal file
382
zlib-Port-fix-for-CVE-2018-25032-to-U-Boot.patch
Normal file
@ -0,0 +1,382 @@
|
|||||||
|
From patchwork Tue May 10 18:36:59 2022
|
||||||
|
Content-Type: text/plain; charset="utf-8"
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Transfer-Encoding: 7bit
|
||||||
|
X-Patchwork-Submitter: Tom Rini <trini@konsulko.com>
|
||||||
|
X-Patchwork-Id: 1629327
|
||||||
|
X-Patchwork-Delegate: trini@ti.com
|
||||||
|
Return-Path: <u-boot-bounces@lists.denx.de>
|
||||||
|
X-Original-To: incoming@patchwork.ozlabs.org
|
||||||
|
Delivered-To: patchwork-incoming@bilbo.ozlabs.org
|
||||||
|
Authentication-Results: ozlabs.org;
|
||||||
|
spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de
|
||||||
|
(client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de;
|
||||||
|
envelope-from=u-boot-bounces@lists.denx.de; receiver=<UNKNOWN>)
|
||||||
|
Received: from phobos.denx.de (phobos.denx.de
|
||||||
|
[IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01])
|
||||||
|
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
|
||||||
|
key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest
|
||||||
|
SHA256)
|
||||||
|
(No client certificate requested)
|
||||||
|
by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KyRbn5BX1z9sGD
|
||||||
|
for <incoming@patchwork.ozlabs.org>; Wed, 11 May 2022 04:37:23 +1000 (AEST)
|
||||||
|
Received: from h2850616.stratoserver.net (localhost [IPv6:::1])
|
||||||
|
by phobos.denx.de (Postfix) with ESMTP id A92288427E;
|
||||||
|
Tue, 10 May 2022 20:37:11 +0200 (CEST)
|
||||||
|
Authentication-Results: phobos.denx.de;
|
||||||
|
dmarc=fail (p=none dis=none) header.from=konsulko.com
|
||||||
|
Authentication-Results: phobos.denx.de;
|
||||||
|
spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de
|
||||||
|
Received: by phobos.denx.de (Postfix, from userid 109)
|
||||||
|
id 5EE118428F; Tue, 10 May 2022 20:37:09 +0200 (CEST)
|
||||||
|
X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de
|
||||||
|
X-Spam-Level:
|
||||||
|
X-Spam-Status: No, score=-1.4 required=5.0 tests=BAYES_00,
|
||||||
|
FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,
|
||||||
|
RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_PASS,
|
||||||
|
T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.2
|
||||||
|
Received: from mail-qt1-f170.google.com (mail-qt1-f170.google.com
|
||||||
|
[209.85.160.170])
|
||||||
|
(using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits))
|
||||||
|
(No client certificate requested)
|
||||||
|
by phobos.denx.de (Postfix) with ESMTPS id BC6F78425F
|
||||||
|
for <u-boot@lists.denx.de>; Tue, 10 May 2022 20:37:04 +0200 (CEST)
|
||||||
|
Authentication-Results: phobos.denx.de;
|
||||||
|
dmarc=fail (p=none dis=none) header.from=konsulko.com
|
||||||
|
Authentication-Results: phobos.denx.de;
|
||||||
|
spf=pass smtp.mailfrom=tom.rini@gmail.com
|
||||||
|
Received: by mail-qt1-f170.google.com with SMTP id t11so14204577qto.11
|
||||||
|
for <u-boot@lists.denx.de>; Tue, 10 May 2022 11:37:04 -0700 (PDT)
|
||||||
|
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
|
||||||
|
d=1e100.net; s=20210112;
|
||||||
|
h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version
|
||||||
|
:content-transfer-encoding;
|
||||||
|
bh=GgFA2F9spTDeRgG1dsLXhCI+5ME44EB+UP3kk83/r+w=;
|
||||||
|
b=zXRRyKVcPVLTBD71EFJ8uajlzRqX7d1i0mFi4MLdw5LEfjtJtJZQd2KHjhXseHEt6+
|
||||||
|
XxaSQG1Ari1f3adpf7Hsb9AeDE/8GhnOcICHTI+0E3I5Q8OHjkp0EaLnIdRL4Z97HnQf
|
||||||
|
eCGtIivU6CIxghbp6568d/w6D0mnyUSer35LbNvFlwW85yU1RcYkDauFIzgeBm/1Fdtd
|
||||||
|
yMZCjr5qDnCiJwYexp6nXQl8o2BoAAfiq+n0g7N3ICV7e5WJtF/eqlmBq1Ms2efxOO3R
|
||||||
|
d2rbTNK7RYrre27RBiCUN4e9GZVHysh02bfEEXMU1rWycFyb/hJLxvJYjrMGgqnu4nz1
|
||||||
|
FNHQ==
|
||||||
|
X-Gm-Message-State: AOAM5309WCz7CJBM2JlQOX65gbWpmgAdZizCBB/LDQr1lGxbGBzhzSrA
|
||||||
|
CezrRFVNnNFZF/xP4PS2NQYxp/Y9eg==
|
||||||
|
X-Google-Smtp-Source:
|
||||||
|
ABdhPJxl7/5tGPSU+8kNV89P2lLdCce/fnYp8Eu6BTaaU6Tpe4ZLkfgOMXgKFOfElwDGofc1XUpPug==
|
||||||
|
X-Received: by 2002:a05:622a:1aa5:b0:2f3:b433:5dc1 with SMTP id
|
||||||
|
s37-20020a05622a1aa500b002f3b4335dc1mr20827993qtc.53.1652207823150;
|
||||||
|
Tue, 10 May 2022 11:37:03 -0700 (PDT)
|
||||||
|
Received: from bill-the-cat.lan
|
||||||
|
(2603-6081-7b01-4500-b057-3c7b-12c2-aabf.res6.spectrum.com.
|
||||||
|
[2603:6081:7b01:4500:b057:3c7b:12c2:aabf])
|
||||||
|
by smtp.gmail.com with ESMTPSA id
|
||||||
|
bi5-20020a05620a318500b0069fd12a957bsm4199878qkb.17.2022.05.10.11.37.02
|
||||||
|
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
|
||||||
|
Tue, 10 May 2022 11:37:02 -0700 (PDT)
|
||||||
|
From: Tom Rini <trini@konsulko.com>
|
||||||
|
To: u-boot@lists.denx.de
|
||||||
|
Cc: "Gan, Yau Wai" <yau.wai.gan@intel.com>
|
||||||
|
Subject: [PATCH] zlib: Port fix for CVE-2018-25032 to U-Boot
|
||||||
|
Date: Tue, 10 May 2022 14:36:59 -0400
|
||||||
|
Message-Id: <20220510183659.1749717-1-trini@konsulko.com>
|
||||||
|
X-Mailer: git-send-email 2.25.1
|
||||||
|
MIME-Version: 1.0
|
||||||
|
X-BeenThere: u-boot@lists.denx.de
|
||||||
|
X-Mailman-Version: 2.1.39
|
||||||
|
Precedence: list
|
||||||
|
List-Id: U-Boot discussion <u-boot.lists.denx.de>
|
||||||
|
List-Unsubscribe: <https://lists.denx.de/options/u-boot>,
|
||||||
|
<mailto:u-boot-request@lists.denx.de?subject=unsubscribe>
|
||||||
|
List-Archive: <https://lists.denx.de/pipermail/u-boot/>
|
||||||
|
List-Post: <mailto:u-boot@lists.denx.de>
|
||||||
|
List-Help: <mailto:u-boot-request@lists.denx.de?subject=help>
|
||||||
|
List-Subscribe: <https://lists.denx.de/listinfo/u-boot>,
|
||||||
|
<mailto:u-boot-request@lists.denx.de?subject=subscribe>
|
||||||
|
Errors-To: u-boot-bounces@lists.denx.de
|
||||||
|
Sender: "U-Boot" <u-boot-bounces@lists.denx.de>
|
||||||
|
X-Virus-Scanned: clamav-milter 0.103.5 at phobos.denx.de
|
||||||
|
X-Virus-Status: Clean
|
||||||
|
|
||||||
|
While our copy of zlib is missing upstream commit 263b1a05b04e ("Allow
|
||||||
|
deflatePrime() to insert bits in the middle of a stream.") we do have
|
||||||
|
Z_FIXED support, and so the majority of the code changes in 5c44459c3b28
|
||||||
|
("Fix a bug that can crash deflate on some input when using Z_FIXED.")
|
||||||
|
apply here directly and cleanly. As this has been assigned a CVE, lets
|
||||||
|
go and apply these changes.
|
||||||
|
|
||||||
|
Link: https://github.com/madler/zlib/commit/5c44459c3b28a9bd3283aaceab7c615f8020c531
|
||||||
|
Reported-by: "Gan, Yau Wai" <yau.wai.gan@intel.com>
|
||||||
|
Signed-off-by: Tom Rini <trini@konsulko.com>
|
||||||
|
---
|
||||||
|
lib/zlib/deflate.c | 64 +++++++++++++++++++++++++++++++++++-----------
|
||||||
|
lib/zlib/deflate.h | 25 ++++++++----------
|
||||||
|
lib/zlib/trees.c | 50 ++++++++++--------------------------
|
||||||
|
3 files changed, 74 insertions(+), 65 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/lib/zlib/deflate.c b/lib/zlib/deflate.c
|
||||||
|
index 63473359e456..4549f4dc12a0 100644
|
||||||
|
--- a/lib/zlib/deflate.c
|
||||||
|
+++ b/lib/zlib/deflate.c
|
||||||
|
@@ -223,11 +223,6 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
|
||||||
|
int wrap = 1;
|
||||||
|
static const char my_version[] = ZLIB_VERSION;
|
||||||
|
|
||||||
|
- ushf *overlay;
|
||||||
|
- /* We overlay pending_buf and d_buf+l_buf. This works since the average
|
||||||
|
- * output size for (length,distance) codes is <= 24 bits.
|
||||||
|
- */
|
||||||
|
-
|
||||||
|
if (version == Z_NULL || version[0] != my_version[0] ||
|
||||||
|
stream_size != sizeof(z_stream)) {
|
||||||
|
return Z_VERSION_ERROR;
|
||||||
|
@@ -287,9 +282,47 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
|
||||||
|
|
||||||
|
s->lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */
|
||||||
|
|
||||||
|
- overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);
|
||||||
|
- s->pending_buf = (uchf *) overlay;
|
||||||
|
- s->pending_buf_size = (ulg)s->lit_bufsize * (sizeof(ush)+2L);
|
||||||
|
+ /* We overlay pending_buf and sym_buf. This works since the average size
|
||||||
|
+ * for length/distance pairs over any compressed block is assured to be 31
|
||||||
|
+ * bits or less.
|
||||||
|
+ *
|
||||||
|
+ * Analysis: The longest fixed codes are a length code of 8 bits plus 5
|
||||||
|
+ * extra bits, for lengths 131 to 257. The longest fixed distance codes are
|
||||||
|
+ * 5 bits plus 13 extra bits, for distances 16385 to 32768. The longest
|
||||||
|
+ * possible fixed-codes length/distance pair is then 31 bits total.
|
||||||
|
+ *
|
||||||
|
+ * sym_buf starts one-fourth of the way into pending_buf. So there are
|
||||||
|
+ * three bytes in sym_buf for every four bytes in pending_buf. Each symbol
|
||||||
|
+ * in sym_buf is three bytes -- two for the distance and one for the
|
||||||
|
+ * literal/length. As each symbol is consumed, the pointer to the next
|
||||||
|
+ * sym_buf value to read moves forward three bytes. From that symbol, up to
|
||||||
|
+ * 31 bits are written to pending_buf. The closest the written pending_buf
|
||||||
|
+ * bits gets to the next sym_buf symbol to read is just before the last
|
||||||
|
+ * code is written. At that time, 31*(n-2) bits have been written, just
|
||||||
|
+ * after 24*(n-2) bits have been consumed from sym_buf. sym_buf starts at
|
||||||
|
+ * 8*n bits into pending_buf. (Note that the symbol buffer fills when n-1
|
||||||
|
+ * symbols are written.) The closest the writing gets to what is unread is
|
||||||
|
+ * then n+14 bits. Here n is lit_bufsize, which is 16384 by default, and
|
||||||
|
+ * can range from 128 to 32768.
|
||||||
|
+ *
|
||||||
|
+ * Therefore, at a minimum, there are 142 bits of space between what is
|
||||||
|
+ * written and what is read in the overlain buffers, so the symbols cannot
|
||||||
|
+ * be overwritten by the compressed data. That space is actually 139 bits,
|
||||||
|
+ * due to the three-bit fixed-code block header.
|
||||||
|
+ *
|
||||||
|
+ * That covers the case where either Z_FIXED is specified, forcing fixed
|
||||||
|
+ * codes, or when the use of fixed codes is chosen, because that choice
|
||||||
|
+ * results in a smaller compressed block than dynamic codes. That latter
|
||||||
|
+ * condition then assures that the above analysis also covers all dynamic
|
||||||
|
+ * blocks. A dynamic-code block will only be chosen to be emitted if it has
|
||||||
|
+ * fewer bits than a fixed-code block would for the same set of symbols.
|
||||||
|
+ * Therefore its average symbol length is assured to be less than 31. So
|
||||||
|
+ * the compressed data for a dynamic block also cannot overwrite the
|
||||||
|
+ * symbols from which it is being constructed.
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+ s->pending_buf = (uchf *) ZALLOC(strm, s->lit_bufsize, 4);
|
||||||
|
+ s->pending_buf_size = (ulg)s->lit_bufsize * 4;
|
||||||
|
|
||||||
|
if (s->window == Z_NULL || s->prev == Z_NULL || s->head == Z_NULL ||
|
||||||
|
s->pending_buf == Z_NULL) {
|
||||||
|
@@ -298,8 +331,12 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
|
||||||
|
deflateEnd (strm);
|
||||||
|
return Z_MEM_ERROR;
|
||||||
|
}
|
||||||
|
- s->d_buf = overlay + s->lit_bufsize/sizeof(ush);
|
||||||
|
- s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;
|
||||||
|
+ s->sym_buf = s->pending_buf + s->lit_bufsize;
|
||||||
|
+ s->sym_end = (s->lit_bufsize - 1) * 3;
|
||||||
|
+ /* We avoid equality with lit_bufsize*3 because of wraparound at 64K
|
||||||
|
+ * on 16 bit machines and because stored blocks are restricted to
|
||||||
|
+ * 64K-1 bytes.
|
||||||
|
+ */
|
||||||
|
|
||||||
|
s->level = level;
|
||||||
|
s->strategy = strategy;
|
||||||
|
@@ -935,7 +972,6 @@ int ZEXPORT deflateCopy (dest, source)
|
||||||
|
#else
|
||||||
|
deflate_state *ds;
|
||||||
|
deflate_state *ss;
|
||||||
|
- ushf *overlay;
|
||||||
|
|
||||||
|
|
||||||
|
if (source == Z_NULL || dest == Z_NULL || source->state == Z_NULL) {
|
||||||
|
@@ -955,8 +991,7 @@ int ZEXPORT deflateCopy (dest, source)
|
||||||
|
ds->window = (Bytef *) ZALLOC(dest, ds->w_size, 2*sizeof(Byte));
|
||||||
|
ds->prev = (Posf *) ZALLOC(dest, ds->w_size, sizeof(Pos));
|
||||||
|
ds->head = (Posf *) ZALLOC(dest, ds->hash_size, sizeof(Pos));
|
||||||
|
- overlay = (ushf *) ZALLOC(dest, ds->lit_bufsize, sizeof(ush)+2);
|
||||||
|
- ds->pending_buf = (uchf *) overlay;
|
||||||
|
+ ds->pending_buf = (uchf *) ZALLOC(dest, ds->lit_bufsize, 4);
|
||||||
|
|
||||||
|
if (ds->window == Z_NULL || ds->prev == Z_NULL || ds->head == Z_NULL ||
|
||||||
|
ds->pending_buf == Z_NULL) {
|
||||||
|
@@ -970,8 +1005,7 @@ int ZEXPORT deflateCopy (dest, source)
|
||||||
|
zmemcpy(ds->pending_buf, ss->pending_buf, (uInt)ds->pending_buf_size);
|
||||||
|
|
||||||
|
ds->pending_out = ds->pending_buf + (ss->pending_out - ss->pending_buf);
|
||||||
|
- ds->d_buf = overlay + ds->lit_bufsize/sizeof(ush);
|
||||||
|
- ds->l_buf = ds->pending_buf + (1+sizeof(ush))*ds->lit_bufsize;
|
||||||
|
+ ds->sym_buf = ds->pending_buf + ds->lit_bufsize;
|
||||||
|
|
||||||
|
ds->l_desc.dyn_tree = ds->dyn_ltree;
|
||||||
|
ds->d_desc.dyn_tree = ds->dyn_dtree;
|
||||||
|
diff --git a/lib/zlib/deflate.h b/lib/zlib/deflate.h
|
||||||
|
index cbf0d1ea5d96..4c53b94af0b0 100644
|
||||||
|
--- a/lib/zlib/deflate.h
|
||||||
|
+++ b/lib/zlib/deflate.h
|
||||||
|
@@ -211,7 +211,7 @@ typedef struct internal_state {
|
||||||
|
/* Depth of each subtree used as tie breaker for trees of equal frequency
|
||||||
|
*/
|
||||||
|
|
||||||
|
- uchf *l_buf; /* buffer for literals or lengths */
|
||||||
|
+ uchf *sym_buf; /* buffer for distances and literals/lengths */
|
||||||
|
|
||||||
|
uInt lit_bufsize;
|
||||||
|
/* Size of match buffer for literals/lengths. There are 4 reasons for
|
||||||
|
@@ -233,13 +233,8 @@ typedef struct internal_state {
|
||||||
|
* - I can't count above 4
|
||||||
|
*/
|
||||||
|
|
||||||
|
- uInt last_lit; /* running index in l_buf */
|
||||||
|
-
|
||||||
|
- ushf *d_buf;
|
||||||
|
- /* Buffer for distances. To simplify the code, d_buf and l_buf have
|
||||||
|
- * the same number of elements. To use different lengths, an extra flag
|
||||||
|
- * array would be necessary.
|
||||||
|
- */
|
||||||
|
+ uInt sym_next; /* running index in sym_buf */
|
||||||
|
+ uInt sym_end; /* symbol table full when sym_next reaches this */
|
||||||
|
|
||||||
|
ulg opt_len; /* bit length of current block with optimal trees */
|
||||||
|
ulg static_len; /* bit length of current block with static trees */
|
||||||
|
@@ -318,20 +313,22 @@ void ZLIB_INTERNAL _tr_stored_block OF((deflate_state *s, charf *buf,
|
||||||
|
|
||||||
|
# define _tr_tally_lit(s, c, flush) \
|
||||||
|
{ uch cc = (c); \
|
||||||
|
- s->d_buf[s->last_lit] = 0; \
|
||||||
|
- s->l_buf[s->last_lit++] = cc; \
|
||||||
|
+ s->sym_buf[s->sym_next++] = 0; \
|
||||||
|
+ s->sym_buf[s->sym_next++] = 0; \
|
||||||
|
+ s->sym_buf[s->sym_next++] = cc; \
|
||||||
|
s->dyn_ltree[cc].Freq++; \
|
||||||
|
- flush = (s->last_lit == s->lit_bufsize-1); \
|
||||||
|
+ flush = (s->sym_next == s->sym_end); \
|
||||||
|
}
|
||||||
|
# define _tr_tally_dist(s, distance, length, flush) \
|
||||||
|
{ uch len = (length); \
|
||||||
|
ush dist = (distance); \
|
||||||
|
- s->d_buf[s->last_lit] = dist; \
|
||||||
|
- s->l_buf[s->last_lit++] = len; \
|
||||||
|
+ s->sym_buf[s->sym_next++] = dist; \
|
||||||
|
+ s->sym_buf[s->sym_next++] = dist >> 8; \
|
||||||
|
+ s->sym_buf[s->sym_next++] = len; \
|
||||||
|
dist--; \
|
||||||
|
s->dyn_ltree[_length_code[len]+LITERALS+1].Freq++; \
|
||||||
|
s->dyn_dtree[d_code(dist)].Freq++; \
|
||||||
|
- flush = (s->last_lit == s->lit_bufsize-1); \
|
||||||
|
+ flush = (s->sym_next == s->sym_end); \
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
# define _tr_tally_lit(s, c, flush) flush = _tr_tally(s, 0, c)
|
||||||
|
diff --git a/lib/zlib/trees.c b/lib/zlib/trees.c
|
||||||
|
index 700c62f6d7b9..970bc5dbc64e 100644
|
||||||
|
--- a/lib/zlib/trees.c
|
||||||
|
+++ b/lib/zlib/trees.c
|
||||||
|
@@ -425,7 +425,7 @@ local void init_block(s)
|
||||||
|
|
||||||
|
s->dyn_ltree[END_BLOCK].Freq = 1;
|
||||||
|
s->opt_len = s->static_len = 0L;
|
||||||
|
- s->last_lit = s->matches = 0;
|
||||||
|
+ s->sym_next = s->matches = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#define SMALLEST 1
|
||||||
|
@@ -962,7 +962,7 @@ void ZLIB_INTERNAL _tr_flush_block(s, buf, stored_len, last)
|
||||||
|
|
||||||
|
Tracev((stderr, "\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u ",
|
||||||
|
opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,
|
||||||
|
- s->last_lit));
|
||||||
|
+ s->sym_next / 3));
|
||||||
|
|
||||||
|
if (static_lenb <= opt_lenb) opt_lenb = static_lenb;
|
||||||
|
|
||||||
|
@@ -1029,8 +1029,9 @@ int ZLIB_INTERNAL _tr_tally (s, dist, lc)
|
||||||
|
unsigned dist; /* distance of matched string */
|
||||||
|
unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */
|
||||||
|
{
|
||||||
|
- s->d_buf[s->last_lit] = (ush)dist;
|
||||||
|
- s->l_buf[s->last_lit++] = (uch)lc;
|
||||||
|
+ s->sym_buf[s->sym_next++] = dist;
|
||||||
|
+ s->sym_buf[s->sym_next++] = dist >> 8;
|
||||||
|
+ s->sym_buf[s->sym_next++] = lc;
|
||||||
|
if (dist == 0) {
|
||||||
|
/* lc is the unmatched char */
|
||||||
|
s->dyn_ltree[lc].Freq++;
|
||||||
|
@@ -1045,30 +1046,7 @@ int ZLIB_INTERNAL _tr_tally (s, dist, lc)
|
||||||
|
s->dyn_ltree[_length_code[lc]+LITERALS+1].Freq++;
|
||||||
|
s->dyn_dtree[d_code(dist)].Freq++;
|
||||||
|
}
|
||||||
|
-
|
||||||
|
-#ifdef TRUNCATE_BLOCK
|
||||||
|
- /* Try to guess if it is profitable to stop the current block here */
|
||||||
|
- if ((s->last_lit & 0x1fff) == 0 && s->level > 2) {
|
||||||
|
- /* Compute an upper bound for the compressed length */
|
||||||
|
- ulg out_length = (ulg)s->last_lit*8L;
|
||||||
|
- ulg in_length = (ulg)((long)s->strstart - s->block_start);
|
||||||
|
- int dcode;
|
||||||
|
- for (dcode = 0; dcode < D_CODES; dcode++) {
|
||||||
|
- out_length += (ulg)s->dyn_dtree[dcode].Freq *
|
||||||
|
- (5L+extra_dbits[dcode]);
|
||||||
|
- }
|
||||||
|
- out_length >>= 3;
|
||||||
|
- Tracev((stderr,"\nlast_lit %u, in %ld, out ~%ld(%ld%%) ",
|
||||||
|
- s->last_lit, in_length, out_length,
|
||||||
|
- 100L - out_length*100L/in_length));
|
||||||
|
- if (s->matches < s->last_lit/2 && out_length < in_length/2) return 1;
|
||||||
|
- }
|
||||||
|
-#endif
|
||||||
|
- return (s->last_lit == s->lit_bufsize-1);
|
||||||
|
- /* We avoid equality with lit_bufsize because of wraparound at 64K
|
||||||
|
- * on 16 bit machines and because stored blocks are restricted to
|
||||||
|
- * 64K-1 bytes.
|
||||||
|
- */
|
||||||
|
+ return (s->sym_next == s->sym_end);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ===========================================================================
|
||||||
|
@@ -1081,13 +1059,14 @@ local void compress_block(s, ltree, dtree)
|
||||||
|
{
|
||||||
|
unsigned dist; /* distance of matched string */
|
||||||
|
int lc; /* match length or unmatched char (if dist == 0) */
|
||||||
|
- unsigned lx = 0; /* running index in l_buf */
|
||||||
|
+ unsigned sx = 0; /* running index in sym_buf */
|
||||||
|
unsigned code; /* the code to send */
|
||||||
|
int extra; /* number of extra bits to send */
|
||||||
|
|
||||||
|
- if (s->last_lit != 0) do {
|
||||||
|
- dist = s->d_buf[lx];
|
||||||
|
- lc = s->l_buf[lx++];
|
||||||
|
+ if (s->sym_next != 0) do {
|
||||||
|
+ dist = s->sym_buf[sx++] & 0xff;
|
||||||
|
+ dist += (unsigned)(s->sym_buf[sx++] & 0xff) << 8;
|
||||||
|
+ lc = s->sym_buf[sx++];
|
||||||
|
if (dist == 0) {
|
||||||
|
send_code(s, lc, ltree); /* send a literal byte */
|
||||||
|
Tracecv(isgraph(lc), (stderr," '%c' ", lc));
|
||||||
|
@@ -1112,11 +1091,10 @@ local void compress_block(s, ltree, dtree)
|
||||||
|
}
|
||||||
|
} /* literal or match pair ? */
|
||||||
|
|
||||||
|
- /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */
|
||||||
|
- Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,
|
||||||
|
- "pendingBuf overflow");
|
||||||
|
+ /* Check that the overlay between pending_buf and sym_buf is ok: */
|
||||||
|
+ Assert(s->pending < s->lit_bufsize + sx, "pendingBuf overflow");
|
||||||
|
|
||||||
|
- } while (lx < s->last_lit);
|
||||||
|
+ } while (sx < s->sym_next);
|
||||||
|
|
||||||
|
send_code(s, END_BLOCK, ltree);
|
||||||
|
s->last_eob_len = ltree[END_BLOCK].Len;
|
Loading…
Reference in New Issue
Block a user