meta-google: image_types_hoth: rearrange partitions

Move the update and image descriptor partitions to the end in images
targeting 64-bit machines since we may not have space in the current
location when the bootloader and kernel grow in size.

Tested: Built for 64-bit platform and inspected cr51-image-layout.json
Signed-off-by: Benjamin Fair <benjaminfair@google.com>
Change-Id: Ib66ebbb824319fd526a161bca9330b127f37fe6c
diff --git a/meta-google/classes/image_types_hoth.bbclass b/meta-google/classes/image_types_hoth.bbclass
index 838e264..79f2358 100644
--- a/meta-google/classes/image_types_hoth.bbclass
+++ b/meta-google/classes/image_types_hoth.bbclass
@@ -5,6 +5,10 @@
 FLASH_HOTH_MAILBOX_OFFSET:hoth = "${@65472 if FLASH_SIZE == '65536' else 7168}"
 unset FLASH_UBOOT_ENV_OFFSET
 
+# 64 bit kernels are larger, so they require a different layout
+FLASH_IMAGE_DESC_OFFSET:hoth:aarch64 = "${@61312 if FLASH_SIZE == '65536' else 7232}"
+FLASH_HOTH_UPDATE_OFFSET:hoth:aarch64 = "${@61376 if FLASH_SIZE == '65536' else 31744}"
+
 python do_generate_static:append() {
     _append_image(os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True),
                                'image-hoth-update'),
@@ -46,6 +50,44 @@
             convertPart(
                     'u_boot',
                     d.getVar('FLASH_UBOOT_OFFSET'),
+                    d.getVar('FLASH_KERNEL_OFFSET'),
+                    static=True,
+                    wp=True),
+            convertPart(
+                    'kernel',
+                    d.getVar('FLASH_KERNEL_OFFSET'),
+                    d.getVar('FLASH_ROFS_OFFSET'),
+                    static=True,
+                    wp=True),
+            convertPart(
+                    'rofs',
+                    d.getVar('FLASH_ROFS_OFFSET'),
+                    d.getVar('FLASH_IMAGE_DESC_OFFSET'),
+                    static=True,
+                    wp=True),
+            convertPart(
+                    'image_descriptor',
+                    d.getVar('FLASH_IMAGE_DESC_OFFSET'),
+                    d.getVar('FLASH_HOTH_UPDATE_OFFSET'),
+                    static=True,
+                    wp=True),
+            convertPart(
+                    'hoth_update',
+                    d.getVar('FLASH_HOTH_UPDATE_OFFSET'),
+                    d.getVar('FLASH_RWFS_OFFSET')),
+            convertPart(
+                    'rwfs',
+                    d.getVar('FLASH_RWFS_OFFSET'),
+                    d.getVar('FLASH_HOTH_MAILBOX_OFFSET'),
+                    persist=True),
+            convertPart(
+                    'hoth_mailbox',
+                    d.getVar('FLASH_HOTH_MAILBOX_OFFSET'),
+                    d.getVar('FLASH_SIZE')),
+    ] if d.getVar('TARGET_ARCH' == "aarch64") else [
+            convertPart(
+                    'u_boot',
+                    d.getVar('FLASH_UBOOT_OFFSET'),
                     d.getVar('FLASH_IMAGE_DESC_OFFSET'),
                     static=True,
                     wp=True),