WIP: RPi4 w/ dm-linera
authorŁukasz Stelmach <l.stelmach@samsung.com>
Wed, 20 Sep 2023 07:11:06 +0000 (09:11 +0200)
committerŁukasz Stelmach <l.stelmach@samsung.com>
Wed, 20 Sep 2023 12:15:01 +0000 (14:15 +0200)
Change-Id: I1b1c08a5ccffe10598f9a3866d32aa0a45a11ada
Signed-off-by: Łukasz Stelmach <l.stelmach@samsung.com>
scripts/tizen/sd_fusing.py

index 3323e93..4a8a65b 100755 (executable)
@@ -30,7 +30,7 @@ class Partition:
         output = []
         if self.start:
             output.append(f"start={self.start}MiB")
-        if self.size:
+        if type(self.size) == int and self.size >= 0:
             output.append(f"size={self.size}MiB")
         if self.name:
             output.append(f"name={self.name}")
@@ -71,6 +71,12 @@ class SdFusingTarget:
     def get_partition_index(self, binary):
         return self.binaries.get(binary, None)
 
+class SdFusingTargetAB(SdFusingTarget):
+    def get_partition_index(self, binary):
+        if self.update == 'b':
+            return self.binaries_b.get(binary, None)
+        return self.binaries.get(binary, None)
+
 class Rpi3(SdFusingTarget):
     long_name = "Raspberry Pi 3"
     part_table = [
@@ -102,48 +108,95 @@ class Rpi3(SdFusingTarget):
         self.user_partition = 4
         super().__init__(device, "dos")
 
-class Rpi4(SdFusingTarget):
+class Rpi4Super(SdFusingTargetAB):
+    long_name = "Raspberry Pi 4 w/ super partition"
+    part_table = [
+        {"size": 64,   "fstype": "vfat", "name": "boot_a","start": 4,
+         "ptype": "C12A7328-F81F-11D2-BA4B-00A0C93EC93B"},
+        {"size": 6656, "fstype": "ext4", "name": "super"},
+        {"size": 1344, "fstype": "ext4", "name": "system-data"},
+        {"size": 36,   "fstype": "raw",  "name": "none"},
+        {"size": None, "fstype": "ext4", "name": "user"},
+        {"size": 32,   "fstype": "ext4", "name": "module_a"},
+        {"size": 32,   "fstype": "ext4", "name": "ramdisk_a"},
+        {"size": 32,   "fstype": "ext4", "name": "ramdisk-recovery_a"},
+        {"size": 8,    "fstype": "raw",  "name": "inform"},
+        {"size": 0,    "fstype": "raw",  "name": "empty"},
+        {"size": 64,   "fstype": "vfat", "name": "boot_b",
+         "ptype": "C12A7328-F81F-11D2-BA4B-00A0C93EC93B"},
+        {"size": 0,    "fstype": "raw", "name": "empty"},
+        {"size": 32,   "fstype": "ext4", "name": "module_b"},
+        {"size": 32,   "fstype": "ext4", "name": "ramdisk_b"},
+        {"size": 32,   "fstype": "ext4", "name": "ramdisk-recovery_b"},
+        {"size": 0,    "fstype": "raw", "name": "empty"},
+        {"size": 4,    "fstype": "ext4", "name": "reserved0"},
+        {"size": 64,   "fstype": "ext4", "name": "reserved1"},
+        {"size": 125,  "fstype": "ext4", "name": "reserved2"}
+    ]
+    binaries = {
+        "boot.img":              1,
+        "super.img":             2,
+        "system-data.img":       3,
+        "user.img":              5,
+        "modules.img":           6,
+        "ramdisk.img":           7,
+        "ramdisk-recovery.img":  8,
+    }
+    binaries_b = {
+        "boot.img":             11,
+        "modules.img":          13,
+        "ramdisk.img":          14,
+        "ramdisk-recovery.img": 15,
+    }
+
+    def __init__(self, device, args):
+        self.reserved_space = 8
+        self.user_partition = 4
+        self.update = args.update
+        super().__init__(device, "gpt")
+
+class Rpi4(SdFusingTargetAB):
     long_name = "Raspberry Pi 4"
     part_table = [
-       {"size": 64,   "fstype": "vfat", "name": "boot_a", "start": 4,
+        {"size": 64,   "fstype": "vfat", "name": "boot_a", "start": 4,
          "ptype": "C12A7328-F81F-11D2-BA4B-00A0C93EC93B"},
-       {"size": 3072, "fstype": "ext4", "name": "rootfs_a"},
-       {"size": 1344, "fstype": "ext4", "name": "system-data"},
+        {"size": 3072, "fstype": "ext4", "name": "rootfs_a"},
+        {"size": 1344, "fstype": "ext4", "name": "system-data"},
         {"size": 36,   "fstype": "raw",  "name": "none"},
-       {"size": None, "fstype": "ext4", "name": "user"},
-       {"size": 32,   "fstype": "ext4", "name": "module_a"},
-       {"size": 32,   "fstype": "ext4", "name": "ramdisk_a"},
-       {"size": 32,   "fstype": "ext4", "name": "ramdisk-recovery_a"},
-       {"size": 8,    "fstype": "ext4", "name": "inform"},
-       {"size": 256,  "fstype": "ext4", "name": "hal_a"},
-       {"size": 64,   "fstype": "vfat", "name": "boot_b",
+        {"size": None, "fstype": "ext4", "name": "user"},
+        {"size": 32,   "fstype": "ext4", "name": "module_a"},
+        {"size": 32,   "fstype": "ext4", "name": "ramdisk_a"},
+        {"size": 32,   "fstype": "ext4", "name": "ramdisk-recovery_a"},
+        {"size": 8,    "fstype": "ext4", "name": "inform"},
+        {"size": 256,  "fstype": "ext4", "name": "hal_a"},
+        {"size": 64,   "fstype": "vfat", "name": "boot_b",
          "ptype": "C12A7328-F81F-11D2-BA4B-00A0C93EC93B"},
-       {"size": 3072, "fstype": "ext4", "name": "rootfs_b"},
-       {"size": 32,   "fstype": "ext4", "name": "module_b"},
-       {"size": 32,   "fstype": "ext4", "name": "ramdisk_b"},
-       {"size": 32,   "fstype": "ext4", "name": "ramdisk-recovery_b"},
-       {"size": 256,  "fstype": "ext4", "name": "hal_b"},
-       {"size": 4,    "fstype": "ext4", "name": "param"},
-       {"size": 64,  "fstype": "ext4", "name": "reserved1"},
-       {"size": 125,  "fstype": "ext4", "name": "reserved2"},
+        {"size": 3072, "fstype": "ext4", "name": "rootfs_b"},
+        {"size": 32,   "fstype": "ext4", "name": "module_b"},
+        {"size": 32,   "fstype": "ext4", "name": "ramdisk_b"},
+        {"size": 32,   "fstype": "ext4", "name": "ramdisk-recovery_b"},
+        {"size": 256,  "fstype": "ext4", "name": "hal_b"},
+        {"size": 4,    "fstype": "ext4", "name": "param"},
+        {"size": 64,  "fstype": "ext4", "name": "reserved1"},
+        {"size": 125,  "fstype": "ext4", "name": "reserved2"},
     ]
     binaries = {
-       "boot.img":              1,
-       "rootfs.img":            2,
-       "system-data.img":       3,
-       "user.img":              5,
-       "modules.img":           6,
-       "ramdisk.img":           7,
-       "ramdisk-recovery.img":  8,
-       "hal.img":              10,
+        "boot.img":              1,
+        "rootfs.img":            2,
+        "system-data.img":       3,
+        "user.img":              5,
+        "modules.img":           6,
+        "ramdisk.img":           7,
+        "ramdisk-recovery.img":  8,
+        "hal.img":              10,
     }
     binaries_b = {
-       "boot.img":             11,
-       "rootfs.img":           12,
-       "modules.img":          13,
-       "ramdisk.img":          14,
-       "ramdisk-recovery.img": 15,
-       "hal.img":              16,
+        "boot.img":             11,
+        "rootfs.img":           12,
+        "modules.img":          13,
+        "ramdisk.img":          14,
+        "ramdisk-recovery.img": 15,
+        "hal.img":              16,
     }
 
     def __init__(self, device, args):
@@ -152,12 +205,6 @@ class Rpi4(SdFusingTarget):
         self.update = args.update
         super().__init__(device, "gpt")
 
-    def get_partition_index(self, binary):
-        logging.debug(f"RPi4 get_partition_index: {binary} {repr(self.update)}")
-        if self.update == 'b':
-            self.binaries_b.get(binary, None)
-        return self.binaries.get(binary, None)
-
 class RV64(SdFusingTarget):
     long_name = "QEMU RISC-V 64-bit"
     part_table = [
@@ -207,6 +254,7 @@ class VF2:
 TARGETS = {
     'rpi3': Rpi3,
     'rpi4': Rpi4,
+    'rpi4s': Rpi4Super,
     'vf2': VF2,
     'rv64': RV64
 }