Barebox state on am335x-phytec-phycore-som
Çağlar Kilimci
ckilimci at gmail.com
Thu Jul 20 23:46:46 PDT 2017
Hi all,
2017-07-20 18:06 GMT+03:00 Sam Ravnborg <sam at ravnborg.org>:
> Hi Martin.
>
> On Thu, Jul 20, 2017 at 01:09:54PM +0000, Martin Hollingsworth wrote:
>> Hi,
>> I am trying to enable the barebox state framework and use it to
>> store the bootchooser variables on the am335x-phytec-phycore-som
>> board. I want to do that, so that the variables can be stored
>> in EEPROM rather than in NAND (due to write/erase cycles).
I was exactly trying to do the same thing, 3-4 months ago. There is
something missing or missleading in the documentation. First of all,
you need to compile dts for both barebox and kernel. Each time I would
like to make a change, I change both barebox dts and kernel dts. These
are two similar but actually two different dts files. As an example,
in am335x-phytec-phycore-som.dtsi eeprom device name is "eeprom" but
"i2c_eeprom" in kernel's dts. Secondly, backend-storage-type and
backend-stridesize have some importance. Even if they are written
optional in the documentation, I could not run without them. You need
to calculate "backend-stridesize". Lastly, backend should be like this
"backend = <&eeprom>;". Here is the barebox patch I use:
diff --git a/arch/arm/dts/am335x-phytec-phycore-som.dtsi
b/arch/arm/dts/am335x-phytec-phycore-som.dtsi
index 0b8c454..62598cd 100644
--- a/arch/arm/dts/am335x-phytec-phycore-som.dtsi
+++ b/arch/arm/dts/am335x-phytec-phycore-som.dtsi
@@ -14,6 +14,86 @@
status = "disabled";
};
};
+
+ state {
+ magic = <0x4aaef993>;
+ compatible = "barebox,state";
+ backend-type = "raw";
+ backend = <&eeprom>;
+ backend-storage-type = "direct";
+ backend-stridesize = <0xf0>;
+ bootchooser {
+ system1 {
+ boot{
+ reg = <0x0 0x10>;
+ type = "string";
+ default = "system1";
+ };
+ default_attempts {
+ reg = <0x10 0x4>;
+ type = "uint32";
+ default = <0x03>;
+ };
+ default_priority {
+ reg = <0x14 0x4>;
+ type = "uint32";
+ default = <0x10>;
+ };
+ remaining_attempts {
+ reg = <0x18 0x4>;
+ type = "uint32";
+ default = <0x03>;
+ };
+ priority {
+ reg = <0x1c 0x4>;
+ type = "uint32";
+ default = <0x10>;
+ };
+ };
+ system2 {
+ boot{
+ reg = <0x20 0x10>;
+ type = "string";
+ default = "system2";
+ };
+ default_attempts {
+ reg = <0x30 0x4>;
+ type = "uint32";
+ default = <0x03>;
+ };
+ default_priority {
+ reg = <0x34 0x4>;
+ type = "uint32";
+ default = <0x0f>;
+ };
+ remaining_attempts {
+ reg = <0x38 0x4>;
+ type = "uint32";
+ default = <0x03>;
+ };
+ priority {
+ reg = <0x3c 0x4>;
+ type = "uint32";
+ default = <0x0f>;
+ };
+ };
+ last_chosen {
+ reg = <0x40 0x4>;
+ type = "uint32";
+ default = <0x01>;
+ };
+ boot_to_be {
+ reg = <0x50 0x10>;
+ type = "string";
+ default = "none";
+ };
+ update_id {
+ reg = <0x60 0x10>;
+ type = "string";
+ default = "none";
+ };
+ };
+ };
};
&am33xx_pinmux {
Hope, this helps.
Sincerely,
--
Çağlar Kilimci
More information about the barebox
mailing list