Hi,
Am 2019-06-04 08:32, schrieb Valentina Rusu:
The issue to integrate Barebox state are the following:
* we need to specify a backend for the "state" node;
* the backend should point to an of partition on a non-volatile memory;
* other boards have EEPROM, NAND besides SD card and they are
described in the device tree; RPi has no such thing;
* somehow I need to write the state on the SD card in a location where
does not interfere with the partitions created (boot, rootfs, user
partitions, etc);
* the SD card device (mci0) is automatically detected at startup, and
not described in the device tree;
Below is a part of my patches, using the emmc on a Compute Module as
state backend.
It uses the region between MBR and first partition (starting @4MB) to
save the state.
The patch may contain changes already done to the latest version, so
apply carefully.
diff --git a/arch/arm/dts/bcm2837-rpi-3.dts
b/arch/arm/dts/bcm2837-rpi-3.dts
index 51883613c..420525b9e 100644
--- a/arch/arm/dts/bcm2837-rpi-3.dts
+++ b/arch/arm/dts/bcm2837-rpi-3.dts
@@ -11,10 +11,5 @@
};
&sdhci {
- pinctrl-0 = <&emmc_gpio48>;
- /delete-node/ wifi@1;
-};
-
-&sdhost {
status = "disabled";
};
diff --git a/arch/arm/dts/bcm2837-rpi-cm3.dts
b/arch/arm/dts/bcm2837-rpi-cm3.dts
index cfbffe175..d0144dcbc 100644
--- a/arch/arm/dts/bcm2837-rpi-cm3.dts
+++ b/arch/arm/dts/bcm2837-rpi-cm3.dts
@@ -8,11 +8,76 @@
memory {
reg = <0x0 0x0>;
};
+
+ state: state {
+ magic = <0x4d433230>;
+ compatible = "barebox,state";
+ backend-type = "raw";
+ backend = <&backend_state_sdhost>;
+ backend-storage-type = "circular";
+ backend-stridesize = <0x800>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ bootstate {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ system0 {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ remaining_attempts {
+ reg = <0x0 0x4>;
+ type = "uint32";
+ default = <3>;
+ };
+ priority {
+ reg = <0x4 0x4>;
+ type = "uint32";
+ default = <21>;
+ };
+ };
+
+ system1 {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ remaining_attempts {
+ reg = <0x10 0x4>;
+ type = "uint32";
+ default = <3>;
+ };
+ priority {
+ reg = <0x14 0x4>;
+ type = "uint32";
+ default = <20>;
+ };
+ };
+ last_chosen {
+ reg = <0x2C 0x4>;
+ type = "uint32";
+ };
+ };
+ };
+
+ aliases {
+ state = &state;
+ };
+
};
-&sdhci {
- pinctrl-0 = <&emmc_gpio48>;
- no-sd;
- non-removable;
+&sdhost {
+ pinctrl-names = "default";
+ pinctrl-0 = <&sdhost_gpio48>;
+ bus-width = <4>;
+ vmmc-supply = <®_3v3>;
+ vqmmc-supply = <®_1v8>;
status = "okay";
+ partitions {
+ compatible = "fixed-partitions";
+ #size-cells = <1>;
+ #address-cells = <1>;
+ backend_state_sdhost: part@200000 {
+ label = "state_sdhost";
+ reg = <0x200000 0x200000>;
+ };
+ };
};
_______________________________________________
barebox mailing list
barebox@xxxxxxxxxxxxxxxxxxx
http://lists.infradead.org/mailman/listinfo/barebox