diff mbox series

[v2] ARM: dts: BCM5301X: Linksys EA9500 add fixed partitions

Message ID 20201101200804.2460-1-npcomplete13@gmail.com (mailing list archive)
State Accepted, archived
Headers show
Series [v2] ARM: dts: BCM5301X: Linksys EA9500 add fixed partitions | expand

Commit Message

Vivek Unune Nov. 1, 2020, 8:08 p.m. UTC
This router has dual paritions to store trx firmware image and
dual partitions for nvram. The second one in each of these cases acts
as a backup store.

When tested with OpenWrt, the default partition parser causes two issues:

1. It labels both nvram partitions as nvram. In factory, second one is
labeled devinfo.
2. It parses second trx image and tries to create second 'linux' partition
and fails with - cannot create duplicate 'linux' partition

The following patch works around both of these issues.

Signed-off-by: Vivek Unune <npcomplete13@gmail.com>
---
V2:
	- Removed 0x before partition offset
	- Renamed brcmnand to system 
---
 .../boot/dts/bcm47094-linksys-panamera.dts    | 41 +++++++++++++++++++
 1 file changed, 41 insertions(+)

Comments

Florian Fainelli Nov. 4, 2020, 3:41 a.m. UTC | #1
On Sun,  1 Nov 2020 15:08:03 -0500, Vivek Unune <npcomplete13@gmail.com> wrote:
> This router has dual paritions to store trx firmware image and
> dual partitions for nvram. The second one in each of these cases acts
> as a backup store.
> 
> When tested with OpenWrt, the default partition parser causes two issues:
> 
> 1. It labels both nvram partitions as nvram. In factory, second one is
> labeled devinfo.
> 2. It parses second trx image and tries to create second 'linux' partition
> and fails with - cannot create duplicate 'linux' partition
> 
> The following patch works around both of these issues.
> 
> Signed-off-by: Vivek Unune <npcomplete13@gmail.com>
> ---

Applied to devicetree/next, thanks!
--
Florian
Vivek Unune Nov. 4, 2020, 12:54 p.m. UTC | #2
On Tue, Nov 03, 2020 at 07:41:59PM -0800, Florian Fainelli wrote:
> On Sun,  1 Nov 2020 15:08:03 -0500, Vivek Unune <npcomplete13@gmail.com> wrote:
> > This router has dual paritions to store trx firmware image and
> > dual partitions for nvram. The second one in each of these cases acts
> > as a backup store.
> > 
> > When tested with OpenWrt, the default partition parser causes two issues:
> > 
> > 1. It labels both nvram partitions as nvram. In factory, second one is
> > labeled devinfo.
> > 2. It parses second trx image and tries to create second 'linux' partition
> > and fails with - cannot create duplicate 'linux' partition
> > 
> > The following patch works around both of these issues.
> > 
> > Signed-off-by: Vivek Unune <npcomplete13@gmail.com>
> > ---
> 
> Applied to devicetree/next, thanks!
> --
> Florian

Thanks Florian
Rafał Miłecki Nov. 9, 2020, 5:28 p.m. UTC | #3
On 01.11.2020 21:08, Vivek Unune wrote:
> This router has dual paritions to store trx firmware image and
> dual partitions for nvram. The second one in each of these cases acts
> as a backup store.

I'm quite sure CFE is supposed to flash new firmware to the backup
partition and then mark it as main one. The old firmware partition becomes a
new backup then.

That means you need to check which partition bootloader used to handle
partitioning properly.


> +		partition@200000 {
> +			label = "firmware";
> +			reg = <0x0200000 0x01D00000>;
> +			compatible = "brcm,trx";
> +		};
> +
> +		partition@1F00000 {
> +			label = "failsafe";
> +			reg = <0x01F00000 0x01D00000>;
> +			read-only;
> +		};

Here you assume CFE always boots from the first firmware partition.

Unless EA9500 CFE does sth stupid it seems like a 50% - 50% guess.
Vivek Unune Nov. 9, 2020, 5:58 p.m. UTC | #4
On Mon, Nov 09, 2020 at 06:28:38PM +0100, Rafał Miłecki wrote:
> On 01.11.2020 21:08, Vivek Unune wrote:
> > This router has dual paritions to store trx firmware image and
> > dual partitions for nvram. The second one in each of these cases acts
> > as a backup store.
> 
> I'm quite sure CFE is supposed to flash new firmware to the backup
> partition and then mark it as main one. The old firmware partition becomes a
> new backup then.
>
> That means you need to check which partition bootloader used to handle
> partitioning properly.
> 
> 
> > +		partition@200000 {
> > +			label = "firmware";
> > +			reg = <0x0200000 0x01D00000>;
> > +			compatible = "brcm,trx";
> > +		};
> > +
> > +		partition@1F00000 {
> > +			label = "failsafe";
> > +			reg = <0x01F00000 0x01D00000>;
> > +			read-only;
> > +		};
> 
> Here you assume CFE always boots from the first firmware partition.
> 
> Unless EA9500 CFE does sth stupid it seems like a 50% - 50% guess.

Hi Rafał,

Indeed, my assumption is to only boot using first partition.

If we ever want to support true dual partitions in future, we need to:

1. Read the boot flag 'bootpartition' and skip the backup partition parsing
2. Updagrading firmware will write to backup partition and flip the bootpartition


Thanks,

Vivek
diff mbox series

Patch

diff --git a/arch/arm/boot/dts/bcm47094-linksys-panamera.dts b/arch/arm/boot/dts/bcm47094-linksys-panamera.dts
index 5d5930edfb9d..13da16c5de68 100644
--- a/arch/arm/boot/dts/bcm47094-linksys-panamera.dts
+++ b/arch/arm/boot/dts/bcm47094-linksys-panamera.dts
@@ -292,3 +292,44 @@  fixed-link {
 &usb3_phy {
 	status = "okay";
 };
+
+&nandcs {
+	partitions {
+		compatible = "fixed-partitions";
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		partition@0 {
+			label = "boot";
+			reg = <0x0000000 0x0080000>;
+			read-only;
+		};
+
+		partition@80000 {
+			label = "nvram";
+			reg = <0x080000 0x0100000>;
+		};
+
+		partition@180000{
+			label = "devinfo";
+			reg = <0x0180000 0x080000>;
+		};
+
+		partition@200000 {
+			label = "firmware";
+			reg = <0x0200000 0x01D00000>;
+			compatible = "brcm,trx";
+		};
+
+		partition@1F00000 {
+			label = "failsafe";
+			reg = <0x01F00000 0x01D00000>;
+			read-only;
+		};
+
+		partition@5200000 {
+			label = "system";
+			reg = <0x05200000 0x02E00000>;
+		};
+	};
+};