summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorYe.Li <B37916@freescale.com>2015-07-09 11:19:13 +0800
committerYe.Li <B37916@freescale.com>2015-07-13 14:44:02 +0800
commitae7ffee7fe9f9b2e217d051971a98e1f28290cb1 (patch)
tree606c01ebff4e867637f20b1040a553ebd977fc01 /include
parent93e01750558e1ba2a1dfdb0cca24ed38326db091 (diff)
downloadu-boot-imx-ae7ffee7fe9f9b2e217d051971a98e1f28290cb1.zip
u-boot-imx-ae7ffee7fe9f9b2e217d051971a98e1f28290cb1.tar.gz
u-boot-imx-ae7ffee7fe9f9b2e217d051971a98e1f28290cb1.tar.bz2
MLK-11228-1 android: Integrate community fastboot with FSL i.MX fastboot
1. Replace the UDC driver with community's USB gadget d_dnl driver. 2. Integrate the FSL SD/SATA/NAND flash operations, since the GPT and EFI partitions are not support by i.MX. 3. Add FDT support to community's android image. 4. Change the booti command to boota, due to the booti has been used for ARM64 image boot. 5. Modify boota implementation to load ramdisk and fdt to their loading addresses specified in boot.img header, while bootm won't do it for android image. 6. Modify the android image HAB implementation. Authenticate the boot.img on the "load_addr" for both SD and NAND. 7. Enable new configuration CONFIG_FSL_FASTBOOT for Freescale's fastboot with relevant header file "fsl_fastboot.h". While disabling the configuration, the community fastboot is used. 8. Use community's way to combine cmdline in boot.img and u-boot environment, not overwrite the cmdline in boot.img Signed-off-by: Ye.Li <B37916@freescale.com>
Diffstat (limited to 'include')
-rw-r--r--include/configs/mx6sabre_common.h22
-rw-r--r--include/configs/mx6sabreandroid_common.h54
-rw-r--r--include/configs/mx6slevkandroid.h55
-rw-r--r--include/configs/mx6sxsabreautoandroid.h52
-rw-r--r--include/configs/mx6sxsabresdandroid.h49
-rw-r--r--include/configs/mx6ul_14x14_evk_android.h51
-rw-r--r--include/configs/mx7dsabresdandroid.h49
-rw-r--r--include/fastboot.h376
-rw-r--r--include/fsl_fastboot.h172
-rw-r--r--include/image.h2
10 files changed, 331 insertions, 551 deletions
diff --git a/include/configs/mx6sabre_common.h b/include/configs/mx6sabre_common.h
index 27b1e85..dda9228 100644
--- a/include/configs/mx6sabre_common.h
+++ b/include/configs/mx6sabre_common.h
@@ -443,28 +443,6 @@
#define CONFIG_IMX_HDMI
#define CONFIG_IMX_VIDEO_SKIP
-#ifndef CONFIG_SPL
-/*
- * USE our legacy UDC driver, but not CI_UDC
- * USE our legacy fastboot way, but not gnl
- */
-#if 0
-#define CONFIG_CI_UDC
-#define CONFIG_USBD_HS
-#define CONFIG_USB_GADGET_DUALSPEED
-
-#define CONFIG_USB_GADGET
-#define CONFIG_CMD_USB_MASS_STORAGE
-#define CONFIG_USB_GADGET_MASS_STORAGE
-#define CONFIG_USBDOWNLOAD_GADGET
-#define CONFIG_USB_GADGET_VBUS_DRAW 2
-
-#define CONFIG_G_DNL_VENDOR_NUM 0x0525
-#define CONFIG_G_DNL_PRODUCT_NUM 0xa4a5
-#define CONFIG_G_DNL_MANUFACTURER "FSL"
-#endif
-#endif
-
#if defined(CONFIG_ANDROID_SUPPORT)
#include "mx6sabreandroid_common.h"
#endif
diff --git a/include/configs/mx6sabreandroid_common.h b/include/configs/mx6sabreandroid_common.h
index dec4148..633ae30 100644
--- a/include/configs/mx6sabreandroid_common.h
+++ b/include/configs/mx6sabreandroid_common.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2013-2014 Freescale Semiconductor, Inc. All Rights Reserved.
+ * Copyright (C) 2013-2015 Freescale Semiconductor, Inc. All Rights Reserved.
*
* SPDX-License-Identifier: GPL-2.0+
*/
@@ -7,22 +7,26 @@
#ifndef MX6_SABRE_ANDROID_COMMON_H
#define MX6_SABRE_ANDROID_COMMON_H
-#define CONFIG_SERIAL_TAG
+#define CONFIG_CI_UDC
+#define CONFIG_USBD_HS
+#define CONFIG_USB_GADGET_DUALSPEED
+
+#define CONFIG_USB_GADGET
+#define CONFIG_CMD_USB_MASS_STORAGE
+#define CONFIG_USB_GADGET_MASS_STORAGE
+#define CONFIG_USBDOWNLOAD_GADGET
+#define CONFIG_USB_GADGET_VBUS_DRAW 2
-#define CONFIG_USB_DEVICE
-#define CONFIG_IMX_UDC 1
+#define CONFIG_G_DNL_VENDOR_NUM 0x18d1
+#define CONFIG_G_DNL_PRODUCT_NUM 0x0d02
+#define CONFIG_G_DNL_MANUFACTURER "FSL"
#define CONFIG_CMD_FASTBOOT
-#define CONFIG_FASTBOOT 1
-#define CONFIG_FASTBOOT_VENDOR_ID 0x18d1
-#define CONFIG_FASTBOOT_PRODUCT_ID 0x0d02
-#define CONFIG_FASTBOOT_BCD_DEVICE 0x311
-#define CONFIG_FASTBOOT_MANUFACTURER_STR "Freescale"
-#define CONFIG_FASTBOOT_PRODUCT_NAME_STR "i.mx6 Sabre Board"
-#define CONFIG_FASTBOOT_INTERFACE_STR "Android fastboot"
-#define CONFIG_FASTBOOT_CONFIGURATION_STR "Android fastboot"
-#define CONFIG_FASTBOOT_SERIAL_NUM "12345"
-#define CONFIG_FASTBOOT_SATA_NO 0
+#define CONFIG_ANDROID_BOOT_IMAGE
+#define CONFIG_FASTBOOT_FLASH
+
+#define CONFIG_FSL_FASTBOOT
+#define CONFIG_ANDROID_RECOVERY
#if defined CONFIG_SYS_BOOT_NAND
#define CONFIG_FASTBOOT_STORAGE_NAND
@@ -32,21 +36,20 @@
#define CONFIG_FASTBOOT_STORAGE_MMC
#endif
-/* For system.img growing up more than 256MB, more buffer needs
-* to receive the system.img*/
-#define CONFIG_FASTBOOT_TRANSFER_BUF 0x2c000000
-#define CONFIG_FASTBOOT_TRANSFER_BUF_SIZE 0x19000000 /* 400M byte */
-
-
-#define CONFIG_CMD_BOOTI
-#define CONFIG_ANDROID_RECOVERY
-/* which mmc bus is your main storage ? */
#define CONFIG_ANDROID_MAIN_MMC_BUS 2
#define CONFIG_ANDROID_BOOT_PARTITION_MMC 1
#define CONFIG_ANDROID_SYSTEM_PARTITION_MMC 5
#define CONFIG_ANDROID_RECOVERY_PARTITION_MMC 2
#define CONFIG_ANDROID_CACHE_PARTITION_MMC 6
+#if defined(CONFIG_FASTBOOT_STORAGE_NAND)
+#define ANDROID_FASTBOOT_NAND_PARTS "16m@64m(boot) 16m@80m(recovery) 810m@96m(android_root)ubifs"
+#endif
+
+#define CONFIG_CMD_BOOTA
+#define CONFIG_SUPPORT_RAW_INITRD
+#define CONFIG_SERIAL_TAG
+
#undef CONFIG_EXTRA_ENV_SETTINGS
#undef CONFIG_BOOTCOMMAND
@@ -55,8 +58,7 @@
"fdt_high=0xffffffff\0" \
"initrd_high=0xffffffff\0" \
-#if defined(CONFIG_FASTBOOT_STORAGE_NAND)
-#define ANDROID_FASTBOOT_NAND_PARTS "16m@64m(boot) 16m@80m(recovery) 810m@96m(android_root)ubifs"
-#endif
+#define CONFIG_USB_FASTBOOT_BUF_ADDR CONFIG_SYS_LOAD_ADDR
+#define CONFIG_USB_FASTBOOT_BUF_SIZE 0x19000000
#endif /* MX6_SABRE_ANDROID_COMMON_H */
diff --git a/include/configs/mx6slevkandroid.h b/include/configs/mx6slevkandroid.h
index e5e7be7..0e2e64e 100644
--- a/include/configs/mx6slevkandroid.h
+++ b/include/configs/mx6slevkandroid.h
@@ -1,6 +1,6 @@
/*
- * Copyright (C) 2013-2014 Freescale Semiconductor, Inc. All Rights Reserved.
+ * Copyright (C) 2013-2015 Freescale Semiconductor, Inc. All Rights Reserved.
*
* SPDX-License-Identifier: GPL-2.0+
*/
@@ -10,46 +10,39 @@
#include <asm/imx-common/mxc_key_defs.h>
-#define CONFIG_SERIAL_TAG
+#define CONFIG_CI_UDC
+#define CONFIG_USBD_HS
+#define CONFIG_USB_GADGET_DUALSPEED
+
+#define CONFIG_USB_GADGET
+#define CONFIG_CMD_USB_MASS_STORAGE
+#define CONFIG_USB_GADGET_MASS_STORAGE
+#define CONFIG_USBDOWNLOAD_GADGET
+#define CONFIG_USB_GADGET_VBUS_DRAW 2
-#define CONFIG_USB_DEVICE
-#define CONFIG_IMX_UDC 1
+#define CONFIG_G_DNL_VENDOR_NUM 0x18d1
+#define CONFIG_G_DNL_PRODUCT_NUM 0x0d02
+#define CONFIG_G_DNL_MANUFACTURER "FSL"
#define CONFIG_CMD_FASTBOOT
-#define CONFIG_FASTBOOT 1
-#define CONFIG_FASTBOOT_VENDOR_ID 0x18d1
-#define CONFIG_FASTBOOT_PRODUCT_ID 0x0d02
-#define CONFIG_FASTBOOT_BCD_DEVICE 0x311
-#define CONFIG_FASTBOOT_MANUFACTURER_STR "Freescale"
-#define CONFIG_FASTBOOT_PRODUCT_NAME_STR "i.mx6sl EVK Board"
-#define CONFIG_FASTBOOT_INTERFACE_STR "Android fastboot"
-#define CONFIG_FASTBOOT_CONFIGURATION_STR "Android fastboot"
-#define CONFIG_FASTBOOT_SERIAL_NUM "12345"
-#define CONFIG_FASTBOOT_SATA_NO 0
-
-#if defined CONFIG_SYS_BOOT_NAND
-#define CONFIG_FASTBOOT_STORAGE_NAND
-#elif defined CONFIG_SYS_BOOT_SATA
-#define CONFIG_FASTBOOT_STORAGE_SATA
-#else
-#define CONFIG_FASTBOOT_STORAGE_MMC
-#endif
+#define CONFIG_ANDROID_BOOT_IMAGE
+#define CONFIG_FASTBOOT_FLASH
-/* For system.img growing up more than 256MB, more buffer needs
-* to receive the system.img*/
-#define CONFIG_FASTBOOT_TRANSFER_BUF 0x8c000000
-#define CONFIG_FASTBOOT_TRANSFER_BUF_SIZE 0x19000000 /* 400M byte */
+#define CONFIG_FSL_FASTBOOT
+#define CONFIG_ANDROID_RECOVERY
+#define CONFIG_FASTBOOT_STORAGE_MMC
-#define CONFIG_CMD_BOOTI
-#define CONFIG_ANDROID_RECOVERY
-/* which mmc bus is your main storage ? */
#define CONFIG_ANDROID_MAIN_MMC_BUS 2
#define CONFIG_ANDROID_BOOT_PARTITION_MMC 1
#define CONFIG_ANDROID_SYSTEM_PARTITION_MMC 5
#define CONFIG_ANDROID_RECOVERY_PARTITION_MMC 2
#define CONFIG_ANDROID_CACHE_PARTITION_MMC 6
+#define CONFIG_CMD_BOOTA
+#define CONFIG_SUPPORT_RAW_INITRD
+#define CONFIG_SERIAL_TAG
+
/*keyboard mapping*/
#define CONFIG_VOL_DOWN_KEY KEY_BACK
#define CONFIG_POWER_KEY KEY_5
@@ -65,7 +58,6 @@
#define CONFIG_MXC_KPD_COLMAX 4
#define CONFIG_MXC_KPD_ROWMAX 4
-
#undef CONFIG_EXTRA_ENV_SETTINGS
#undef CONFIG_BOOTCOMMAND
@@ -74,4 +66,7 @@
"fdt_high=0xffffffff\0" \
"initrd_high=0xffffffff\0" \
+#define CONFIG_USB_FASTBOOT_BUF_ADDR CONFIG_SYS_LOAD_ADDR
+#define CONFIG_USB_FASTBOOT_BUF_SIZE 0x19000000
+
#endif
diff --git a/include/configs/mx6sxsabreautoandroid.h b/include/configs/mx6sxsabreautoandroid.h
index 6501592..514e383 100644
--- a/include/configs/mx6sxsabreautoandroid.h
+++ b/include/configs/mx6sxsabreautoandroid.h
@@ -1,6 +1,6 @@
/*
- * Copyright (C) 2014 Freescale Semiconductor, Inc.
+ * Copyright (C) 2014-2015 Freescale Semiconductor, Inc.
*
* SPDX-License-Identifier: GPL-2.0+
*/
@@ -8,22 +8,26 @@
#ifndef __MX6SX_SABREAUTO_ANDROID_H
#define __MX6SX_SABREAUTO_ANDROID_H
-#define CONFIG_SERIAL_TAG
+#define CONFIG_CI_UDC
+#define CONFIG_USBD_HS
+#define CONFIG_USB_GADGET_DUALSPEED
+
+#define CONFIG_USB_GADGET
+#define CONFIG_CMD_USB_MASS_STORAGE
+#define CONFIG_USB_GADGET_MASS_STORAGE
+#define CONFIG_USBDOWNLOAD_GADGET
+#define CONFIG_USB_GADGET_VBUS_DRAW 2
-#define CONFIG_USB_DEVICE
-#define CONFIG_IMX_UDC 1
+#define CONFIG_G_DNL_VENDOR_NUM 0x18d1
+#define CONFIG_G_DNL_PRODUCT_NUM 0x0d02
+#define CONFIG_G_DNL_MANUFACTURER "FSL"
#define CONFIG_CMD_FASTBOOT
-#define CONFIG_FASTBOOT 1
-#define CONFIG_FASTBOOT_VENDOR_ID 0x18d1
-#define CONFIG_FASTBOOT_PRODUCT_ID 0x0d02
-#define CONFIG_FASTBOOT_BCD_DEVICE 0x311
-#define CONFIG_FASTBOOT_MANUFACTURER_STR "Freescale"
-#define CONFIG_FASTBOOT_PRODUCT_NAME_STR "i.mx6sx SABRE-AUTO Board"
-#define CONFIG_FASTBOOT_INTERFACE_STR "Android fastboot"
-#define CONFIG_FASTBOOT_CONFIGURATION_STR "Android fastboot"
-#define CONFIG_FASTBOOT_SERIAL_NUM "12345"
-#define CONFIG_FASTBOOT_SATA_NO 0
+#define CONFIG_ANDROID_BOOT_IMAGE
+#define CONFIG_FASTBOOT_FLASH
+
+#define CONFIG_FSL_FASTBOOT
+#define CONFIG_ANDROID_RECOVERY
#if defined CONFIG_SYS_BOOT_NAND
#define CONFIG_FASTBOOT_STORAGE_NAND
@@ -31,21 +35,20 @@
#define CONFIG_FASTBOOT_STORAGE_MMC
#endif
-/* For system.img growing up more than 256MB, more buffer needs
-* to receive the system.img*/
-#define CONFIG_FASTBOOT_TRANSFER_BUF 0x8c000000
-#define CONFIG_FASTBOOT_TRANSFER_BUF_SIZE 0x19000000 /* 400M byte */
-
+#if defined(CONFIG_FASTBOOT_STORAGE_NAND)
+#define ANDROID_FASTBOOT_NAND_PARTS "16m@64m(boot) 16m@80m(recovery) 810m@96m(android_root)ubifs"
+#endif
-#define CONFIG_CMD_BOOTI
-#define CONFIG_ANDROID_RECOVERY
-/* which mmc bus is your main storage ? */
#define CONFIG_ANDROID_MAIN_MMC_BUS 2
#define CONFIG_ANDROID_BOOT_PARTITION_MMC 1
#define CONFIG_ANDROID_SYSTEM_PARTITION_MMC 5
#define CONFIG_ANDROID_RECOVERY_PARTITION_MMC 2
#define CONFIG_ANDROID_CACHE_PARTITION_MMC 6
+#define CONFIG_CMD_BOOTA
+#define CONFIG_SUPPORT_RAW_INITRD
+#define CONFIG_SERIAL_TAG
+
#undef CONFIG_EXTRA_ENV_SETTINGS
#undef CONFIG_BOOTCOMMAND
@@ -54,8 +57,7 @@
"fdt_high=0xffffffff\0" \
"initrd_high=0xffffffff\0" \
-#if defined(CONFIG_FASTBOOT_STORAGE_NAND)
-#define ANDROID_FASTBOOT_NAND_PARTS "16m@64m(boot) 16m@80m(recovery) 810m@96m(android_root)ubifs"
-#endif
+#define CONFIG_USB_FASTBOOT_BUF_ADDR CONFIG_SYS_LOAD_ADDR
+#define CONFIG_USB_FASTBOOT_BUF_SIZE 0x19000000
#endif
diff --git a/include/configs/mx6sxsabresdandroid.h b/include/configs/mx6sxsabresdandroid.h
index 83a2a38..328b458 100644
--- a/include/configs/mx6sxsabresdandroid.h
+++ b/include/configs/mx6sxsabresdandroid.h
@@ -1,6 +1,6 @@
/*
- * Copyright (C) 2014 Freescale Semiconductor, Inc.
+ * Copyright (C) 2014-2015 Freescale Semiconductor, Inc.
*
* SPDX-License-Identifier: GPL-2.0+
*/
@@ -8,40 +8,39 @@
#ifndef __MX6SX_SABRESD_ANDROID_H
#define __MX6SX_SABRESD_ANDROID_H
-#define CONFIG_SERIAL_TAG
+#define CONFIG_CI_UDC
+#define CONFIG_USBD_HS
+#define CONFIG_USB_GADGET_DUALSPEED
-#define CONFIG_USB_DEVICE
-#define CONFIG_IMX_UDC 1
+#define CONFIG_USB_GADGET
+#define CONFIG_CMD_USB_MASS_STORAGE
+#define CONFIG_USB_GADGET_MASS_STORAGE
+#define CONFIG_USBDOWNLOAD_GADGET
+#define CONFIG_USB_GADGET_VBUS_DRAW 2
-#define CONFIG_CMD_FASTBOOT
-#define CONFIG_FASTBOOT 1
-#define CONFIG_FASTBOOT_VENDOR_ID 0x18d1
-#define CONFIG_FASTBOOT_PRODUCT_ID 0x0d02
-#define CONFIG_FASTBOOT_BCD_DEVICE 0x311
-#define CONFIG_FASTBOOT_MANUFACTURER_STR "Freescale"
-#define CONFIG_FASTBOOT_PRODUCT_NAME_STR "i.mx6sx SABRESD Board"
-#define CONFIG_FASTBOOT_INTERFACE_STR "Android fastboot"
-#define CONFIG_FASTBOOT_CONFIGURATION_STR "Android fastboot"
-#define CONFIG_FASTBOOT_SERIAL_NUM "12345"
-#define CONFIG_FASTBOOT_SATA_NO 0
+#define CONFIG_G_DNL_VENDOR_NUM 0x18d1
+#define CONFIG_G_DNL_PRODUCT_NUM 0x0d02
+#define CONFIG_G_DNL_MANUFACTURER "FSL"
-#define CONFIG_FASTBOOT_STORAGE_MMC
+#define CONFIG_CMD_FASTBOOT
+#define CONFIG_ANDROID_BOOT_IMAGE
+#define CONFIG_FASTBOOT_FLASH
-/* For system.img growing up more than 256MB, more buffer needs
-* to receive the system.img*/
-#define CONFIG_FASTBOOT_TRANSFER_BUF 0x8c000000
-#define CONFIG_FASTBOOT_TRANSFER_BUF_SIZE 0x19000000 /* 400M byte */
+#define CONFIG_FSL_FASTBOOT
+#define CONFIG_ANDROID_RECOVERY
+#define CONFIG_FASTBOOT_STORAGE_MMC
-#define CONFIG_CMD_BOOTI
-#define CONFIG_ANDROID_RECOVERY
-/* which mmc bus is your main storage ? */
#define CONFIG_ANDROID_MAIN_MMC_BUS 2
#define CONFIG_ANDROID_BOOT_PARTITION_MMC 1
#define CONFIG_ANDROID_SYSTEM_PARTITION_MMC 5
#define CONFIG_ANDROID_RECOVERY_PARTITION_MMC 2
#define CONFIG_ANDROID_CACHE_PARTITION_MMC 6
+#define CONFIG_CMD_BOOTA
+#define CONFIG_SUPPORT_RAW_INITRD
+#define CONFIG_SERIAL_TAG
+
#undef CONFIG_EXTRA_ENV_SETTINGS
#undef CONFIG_BOOTCOMMAND
@@ -50,4 +49,8 @@
"fdt_high=0xffffffff\0" \
"initrd_high=0xffffffff\0" \
+#define CONFIG_USB_FASTBOOT_BUF_ADDR CONFIG_SYS_LOAD_ADDR
+#define CONFIG_USB_FASTBOOT_BUF_SIZE 0x19000000
+
+
#endif
diff --git a/include/configs/mx6ul_14x14_evk_android.h b/include/configs/mx6ul_14x14_evk_android.h
index f44145a..0a0c476 100644
--- a/include/configs/mx6ul_14x14_evk_android.h
+++ b/include/configs/mx6ul_14x14_evk_android.h
@@ -8,22 +8,26 @@
#ifndef __MX6UL_EVK_ANDROID_H
#define __MX6UL_EVK_ANDROID_H
-#define CONFIG_SERIAL_TAG
+#define CONFIG_CI_UDC
+#define CONFIG_USBD_HS
+#define CONFIG_USB_GADGET_DUALSPEED
+
+#define CONFIG_USB_GADGET
+#define CONFIG_CMD_USB_MASS_STORAGE
+#define CONFIG_USB_GADGET_MASS_STORAGE
+#define CONFIG_USBDOWNLOAD_GADGET
+#define CONFIG_USB_GADGET_VBUS_DRAW 2
-#define CONFIG_USB_DEVICE
-#define CONFIG_IMX_UDC 1
+#define CONFIG_G_DNL_VENDOR_NUM 0x18d1
+#define CONFIG_G_DNL_PRODUCT_NUM 0x0d02
+#define CONFIG_G_DNL_MANUFACTURER "FSL"
#define CONFIG_CMD_FASTBOOT
-#define CONFIG_FASTBOOT 1
-#define CONFIG_FASTBOOT_VENDOR_ID 0x18d1
-#define CONFIG_FASTBOOT_PRODUCT_ID 0x0d02
-#define CONFIG_FASTBOOT_BCD_DEVICE 0x311
-#define CONFIG_FASTBOOT_MANUFACTURER_STR "Freescale"
-#define CONFIG_FASTBOOT_PRODUCT_NAME_STR "i.MX6UL EVK Board"
-#define CONFIG_FASTBOOT_INTERFACE_STR "Android fastboot"
-#define CONFIG_FASTBOOT_CONFIGURATION_STR "Android fastboot"
-#define CONFIG_FASTBOOT_SERIAL_NUM "12345"
-#define CONFIG_FASTBOOT_SATA_NO 0
+#define CONFIG_ANDROID_BOOT_IMAGE
+#define CONFIG_FASTBOOT_FLASH
+
+#define CONFIG_FSL_FASTBOOT
+#define CONFIG_ANDROID_RECOVERY
#if defined CONFIG_SYS_BOOT_NAND
#define CONFIG_FASTBOOT_STORAGE_NAND
@@ -31,22 +35,20 @@
#define CONFIG_FASTBOOT_STORAGE_MMC
#endif
+#if defined(CONFIG_FASTBOOT_STORAGE_NAND)
+#define ANDROID_FASTBOOT_NAND_PARTS "16m@64m(boot) 16m@80m(recovery) 810m@96m(android_root)ubifs"
+#endif
-/* For system.img growing up more than 256MB, more buffer needs
-* to receive the system.img*/
-#define CONFIG_FASTBOOT_TRANSFER_BUF 0x84000000
-#define CONFIG_FASTBOOT_TRANSFER_BUF_SIZE 0x19000000 /* 400M byte */
-
-
-#define CONFIG_CMD_BOOTI
-#define CONFIG_ANDROID_RECOVERY
-/* which mmc bus is your main storage ? */
#define CONFIG_ANDROID_MAIN_MMC_BUS 2
#define CONFIG_ANDROID_BOOT_PARTITION_MMC 1
#define CONFIG_ANDROID_SYSTEM_PARTITION_MMC 5
#define CONFIG_ANDROID_RECOVERY_PARTITION_MMC 2
#define CONFIG_ANDROID_CACHE_PARTITION_MMC 6
+#define CONFIG_CMD_BOOTA
+#define CONFIG_SUPPORT_RAW_INITRD
+#define CONFIG_SERIAL_TAG
+
#undef CONFIG_EXTRA_ENV_SETTINGS
#undef CONFIG_BOOTCOMMAND
@@ -55,8 +57,7 @@
"fdt_high=0xffffffff\0" \
"initrd_high=0xffffffff\0" \
-#if defined(CONFIG_FASTBOOT_STORAGE_NAND)
-#define ANDROID_FASTBOOT_NAND_PARTS "16m@64m(boot) 16m@80m(recovery) 810m@96m(android_root)ubifs"
-#endif
+#define CONFIG_USB_FASTBOOT_BUF_ADDR CONFIG_SYS_LOAD_ADDR
+#define CONFIG_USB_FASTBOOT_BUF_SIZE 0x19000000
#endif
diff --git a/include/configs/mx7dsabresdandroid.h b/include/configs/mx7dsabresdandroid.h
index d523a07..cbcc173 100644
--- a/include/configs/mx7dsabresdandroid.h
+++ b/include/configs/mx7dsabresdandroid.h
@@ -8,42 +8,38 @@
#ifndef __MX7D_SABRESD_ANDROID_H
#define __MX7D_SABRESD_ANDROID_H
-#define CONFIG_SERIAL_TAG
+#define CONFIG_CI_UDC
+#define CONFIG_USBD_HS
+#define CONFIG_USB_GADGET_DUALSPEED
-#define CONFIG_USB_DEVICE
-#define CONFIG_IMX_UDC 1
-#define OTG_BASE_ADDR USBOTG1_IPS_BASE_ADDR
+#define CONFIG_USB_GADGET
+#define CONFIG_CMD_USB_MASS_STORAGE
+#define CONFIG_USB_GADGET_MASS_STORAGE
+#define CONFIG_USBDOWNLOAD_GADGET
+#define CONFIG_USB_GADGET_VBUS_DRAW 2
-#define CONFIG_CMD_FASTBOOT
+#define CONFIG_G_DNL_VENDOR_NUM 0x18d1
+#define CONFIG_G_DNL_PRODUCT_NUM 0x0d02
+#define CONFIG_G_DNL_MANUFACTURER "FSL"
-#define CONFIG_FASTBOOT 1
-#define CONFIG_FASTBOOT_VENDOR_ID 0x18d1
-#define CONFIG_FASTBOOT_PRODUCT_ID 0x0d02
-#define CONFIG_FASTBOOT_BCD_DEVICE 0x311
-#define CONFIG_FASTBOOT_MANUFACTURER_STR "Freescale"
-#define CONFIG_FASTBOOT_PRODUCT_NAME_STR "i.MX7D SABRESD Board"
-#define CONFIG_FASTBOOT_INTERFACE_STR "Android fastboot"
-#define CONFIG_FASTBOOT_CONFIGURATION_STR "Android fastboot"
-#define CONFIG_FASTBOOT_SERIAL_NUM "12345"
-#define CONFIG_FASTBOOT_SATA_NO 0
+#define CONFIG_CMD_FASTBOOT
+#define CONFIG_ANDROID_BOOT_IMAGE
+#define CONFIG_FASTBOOT_FLASH
+#define CONFIG_FSL_FASTBOOT
+#define CONFIG_ANDROID_RECOVERY
#define CONFIG_FASTBOOT_STORAGE_MMC
-/* For system.img growing up more than 256MB, more buffer needs
-* to receive the system.img*/
-#define CONFIG_FASTBOOT_TRANSFER_BUF 0x8c000000
-#define CONFIG_FASTBOOT_TRANSFER_BUF_SIZE 0x19000000 /* 400M byte */
-
-
-#define CONFIG_CMD_BOOTI
-#define CONFIG_ANDROID_RECOVERY
-/* which mmc bus is your main storage ? */
#define CONFIG_ANDROID_MAIN_MMC_BUS 2
#define CONFIG_ANDROID_BOOT_PARTITION_MMC 1
#define CONFIG_ANDROID_SYSTEM_PARTITION_MMC 5
#define CONFIG_ANDROID_RECOVERY_PARTITION_MMC 2
#define CONFIG_ANDROID_CACHE_PARTITION_MMC 6
+#define CONFIG_CMD_BOOTA
+#define CONFIG_SUPPORT_RAW_INITRD
+#define CONFIG_SERIAL_TAG
+
#undef CONFIG_EXTRA_ENV_SETTINGS
#undef CONFIG_BOOTCOMMAND
@@ -52,4 +48,9 @@
"fdt_high=0xffffffff\0" \
"initrd_high=0xffffffff\0" \
+
+#define CONFIG_USB_FASTBOOT_BUF_ADDR CONFIG_SYS_LOAD_ADDR
+#define CONFIG_USB_FASTBOOT_BUF_SIZE 0x19000000
+
+
#endif
diff --git a/include/fastboot.h b/include/fastboot.h
deleted file mode 100644
index c81abcf..0000000
--- a/include/fastboot.h
+++ /dev/null
@@ -1,376 +0,0 @@
-/*
- * (C) Copyright 2008 - 2009
- * Windriver, <www.windriver.com>
- * Tom Rix <Tom.Rix@windriver.com>
- *
- * Copyright (C) 2010-2013 Freescale Semiconductor, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- *
- * The logical naming of flash comes from the Android project
- * Thse structures and functions that look like fastboot_flash_*
- * They come from bootloader/legacy/include/boot/flash.h
- *
- * The boot_img_hdr structure and associated magic numbers also
- * come from the Android project. They are from
- * system/core/mkbootimg/bootimg.h
- *
- * Here are their copyrights
- *
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- */
-
-#ifndef FASTBOOT_H
-#define FASTBOOT_H
-
-#include <common.h>
-#include <command.h>
-
-/* This is the interface file between the common cmd_fastboot.c and
- the board specific support.
-
- To use this interface, define CONFIG_FASTBOOT in your board config file.
- An example is include/configs/mx6slevkandroid.h
- ...
- #define CONFIG_FASTBOOT 1 / * Using fastboot interface * /
- ...
-
-*/
-
-/* From fastboot client.. */
-#define FASTBOOT_INTERFACE_CLASS 0xff
-#define FASTBOOT_INTERFACE_SUB_CLASS 0x42
-#define FASTBOOT_INTERFACE_PROTOCOL 0x03
-
-#define FASTBOOT_VERSION "0.5"
-
-/* Max size of responses from us to host */
-#define FASTBOOT_RESPONSE_SIZE 65
-
-/* The fastboot client uses a value of 2048 for the
- page size of it boot.img file format.
- Reset this in your board config file as needed. */
-#ifndef CFG_FASTBOOT_MKBOOTIMAGE_PAGE_SIZE
-#define CFG_FASTBOOT_MKBOOTIMAGE_PAGE_SIZE 2048
-#endif
-
-/* Lower byte shows if the read/write/erase operation in
- repeated. The base address is incremented.
- Either 0 or 1 is ok for a default */
-
-#define FASTBOOT_PTENTRY_FLAGS_REPEAT(n) (n & 0x0f)
-#define FASTBOOT_PTENTRY_FLAGS_REPEAT_MASK 0x0000000F
-
-/* Writes happen a block at a time.
- If the write fails, go to next block
- NEXT_GOOD_BLOCK and CONTIGOUS_BLOCK can not both be set */
-#define FASTBOOT_PTENTRY_FLAGS_WRITE_NEXT_GOOD_BLOCK 0x00000010
-
-/* Find a contiguous block big enough for a the whole file
- NEXT_GOOD_BLOCK and CONTIGOUS_BLOCK can not both be set */
-#define FASTBOOT_PTENTRY_FLAGS_WRITE_CONTIGUOUS_BLOCK 0x00000020
-
-/* Write the file with write.i */
-#define FASTBOOT_PTENTRY_FLAGS_WRITE_I 0x00000100
-
-/* Write the file with write.trimffs */
-#define FASTBOOT_PTENTRY_FLAGS_WRITE_TRIMFFS 0x00000200
-
-/* Write the file as a series of variable/value pairs
- using the setenv and saveenv commands */
-#define FASTBOOT_PTENTRY_FLAGS_WRITE_ENV 0x00000400
-
-/* Status values */
-#define FASTBOOT_OK 0
-#define FASTBOOT_ERROR -1
-#define FASTBOOT_DISCONNECT 1
-#define FASTBOOT_INACTIVE 2
-
-/* Android bootimage file format */
-#define FASTBOOT_BOOT_MAGIC "ANDROID!"
-#define FASTBOOT_BOOT_MAGIC_SIZE 8
-#define FASTBOOT_BOOT_NAME_SIZE 16
-#define FASTBOOT_BOOT_ARGS_SIZE 512
-
-#define FASTBOOT_MMC_BOOT_PARTITION_ID 1
-#define FASTBOOT_MMC_USER_PARTITION_ID 0
-#define FASTBOOT_MMC_NONE_PARTITION_ID -1
-
-enum {
- DEV_SATA,
- DEV_MMC,
- DEV_NAND
-};
-
-struct cmd_fastboot_interface {
- /* This function is called when a buffer has been
- recieved from the client app.
- The buffer is a supplied by the board layer and must be unmodified.
- The buffer_size is how much data is passed in.
- Returns 0 on success
- Returns 1 on failure
-
- Set by cmd_fastboot */
- int (*rx_handler)(const unsigned char *buffer,
- unsigned int buffer_size);
-
- /* This function is called when an exception has
- occurred in the device code and the state
- off fastboot needs to be reset
-
- Set by cmd_fastboot */
- void (*reset_handler)(void);
-
- /* A getvar string for the product name
- It can have a maximum of 60 characters
-
- Set by board */
- char *product_name;
-
- /* A getvar string for the serial number
- It can have a maximum of 60 characters
-
- Set by board */
- char *serial_no;
-
- /* Nand block size
- Supports the write option WRITE_NEXT_GOOD_BLOCK
-
- Set by board */
- unsigned int nand_block_size;
-
- /* Nand oob size
- Set by board */
- unsigned int nand_oob_size;
-
- /* Transfer buffer, for handling flash updates
- Should be multiple of the nand_block_size
- Care should be take so it does not overrun bootloader memory
- Controlled by the configure variable CFG_FASTBOOT_TRANSFER_BUFFER
-
- Set by board */
- unsigned char *transfer_buffer;
-
- /* How big is the transfer buffer
- Controlled by the configure variable
- CFG_FASTBOOT_TRANSFER_BUFFER_SIZE
-
- Set by board */
- unsigned int transfer_buffer_size;
-
-};
-
-/* flash partitions are defined in terms of blocks
-** (flash erase units)
-*/
-struct fastboot_ptentry {
- /* The logical name for this partition, null terminated */
- char name[16];
- /* The start wrt the nand part, must be multiple of nand block size */
- unsigned int start;
- /* The length of the partition, must be multiple of nand block size */
- unsigned int length;
- /* Controls the details of how operations are done on the partition
- See the FASTBOOT_PTENTRY_FLAGS_*'s defined below */
- unsigned int flags;
- /* partition id: 0 - normal partition; 1 - boot partition */
- unsigned int partition_id;
-};
-
-struct fastboot_device_info {
- unsigned char type;
- unsigned char dev_id;
-};
-
-/* Boot img hdr structure comes from the Android project
- * See it in: system/core/mkbootimg/bootimg.h
- */
-struct fastboot_boot_img_hdr {
- unsigned char magic[FASTBOOT_BOOT_MAGIC_SIZE];
-
- unsigned kernel_size; /* size in bytes */
- unsigned kernel_addr; /* physical load addr */
-
- unsigned ramdisk_size; /* size in bytes */
- unsigned ramdisk_addr; /* physical load addr */
-
- unsigned second_size; /* size in bytes */
- unsigned second_addr; /* physical load addr */
-
- unsigned tags_addr; /* physical addr for kernel tags */
- unsigned page_size; /* flash page size we assume */
- unsigned unused[2]; /* future expansion: should be 0 */
-
- unsigned char name[FASTBOOT_BOOT_NAME_SIZE]; /* asciiz product name */
-
- unsigned char cmdline[FASTBOOT_BOOT_ARGS_SIZE];
-
- unsigned id[8]; /* timestamp / checksum / sha1 / etc */
-};
-
-#ifdef CONFIG_FASTBOOT
-
-extern struct fastboot_device_info fastboot_devinfo;
-
-/* Prepare the fastboot environments,
- * should be executed before "fastboot" cmd
- */
-void fastboot_setup(void);
-
-/* Initizes the board specific fastboot
- * Returns 0 on success
- * Returns 1 on failure
- */
-int fastboot_init(struct cmd_fastboot_interface *interface);
-
-/* Cleans up the board specific fastboot */
-void fastboot_shutdown(void);
-
-/*
- * Handles board specific usb protocol exchanges
- * Returns 0 on success
- * Returns 1 on disconnects, break out of loop
- * Returns 2 if no USB activity detected
- * Returns -1 on failure, unhandled usb requests and other error conditions
-*/
-int fastboot_poll(void);
-
-/* Is this high speed (2.0) or full speed (1.1) ?
- * Returns 0 on full speed
- * Returns 1 on high speed
- */
-int fastboot_is_highspeed(void);
-
-/* Return the size of the fifo */
-int fastboot_fifo_size(void);
-
-/* Send a status reply to the client app
- * buffer does not have to be null terminated.
- * buffer_size must be not be larger than what is returned by
- * fastboot_fifo_size
- * Returns 0 on success
- * Returns 1 on failure
- */
-int fastboot_tx_status(const char *buffer, unsigned int buffer_size);
-
-/*
- * Send some data to the client app
- * buffer does not have to be null terminated.
- * buffer_size can be larger than what is returned by
- * fastboot_fifo_size
- * Returns number of bytes written
- */
-int fastboot_tx(unsigned char *buffer, unsigned int buffer_size);
-
-/* A board specific variable handler.
- * The size of the buffers is governed by the fastboot spec.
- * rx_buffer is at most 57 bytes
- * tx_buffer is at most 60 bytes
- * Returns 0 on success
- * Returns 1 on failure
- */
-int fastboot_getvar(const char *rx_buffer, char *tx_buffer);
-
-/* The Android-style flash handling */
-
-/* tools to populate and query the partition table */
-void fastboot_flash_add_ptn(struct fastboot_ptentry *ptn);
-struct fastboot_ptentry *fastboot_flash_find_ptn(const char *name);
-struct fastboot_ptentry *fastboot_flash_get_ptn(unsigned n);
-unsigned int fastboot_flash_get_ptn_count(void);
-void fastboot_flash_dump_ptn(void);
-
-
-/* Check the board special boot mode reboot to fastboot mode. */
-int fastboot_check_and_clean_flag(void);
-
-/*fastboot command handling function*/
-int do_fastboot(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]);
-
-/*check if fastboot mode is requested by user*/
-void check_fastboot(void);
-
-/*Setup board-relative fastboot environment */
-void board_fastboot_setup(void);
-
-#ifdef CONFIG_FASTBOOT_STORAGE_NAND
-/*Save parameters for NAND storage partitions */
-void save_parts_values(struct fastboot_ptentry *ptn,
- unsigned int offset, unsigned int size);
-
-/* Checks parameters for NAND storage partitions
- * Return 1 if the parameter is not set
- * Return 0 if the parameter has been set
- */
-int check_parts_values(struct fastboot_ptentry *ptn);
-#endif /*CONFIG_FASTBOOT_STORAGE_NAND*/
-
-#else /*! CONFIG_FASTBOOT*/
-
-/* Stubs for when CONFIG_FASTBOOT is not defined */
-#define fastboot_setup() 0
-#define fastboot_init(a) 1
-#define fastboot_shutdown()
-#define fastboot_poll() 1
-#define fastboot_is_highspeed() 0
-#define fastboot_fifo_size() 0
-#define fastboot_tx_status(a, b) 1
-#define fastboot_getvar(a, b) 1
-#define fastboot_tx(a, b) 1
-
-#define fastboot_flash_add_ptn(a)
-#define fastboot_flash_find_ptn(a) NULL
-#define fastboot_flash_get_ptn(a) NULL
-#define fastboot_flash_get_ptn_count() 0
-#define fastboot_flash_dump_ptn()
-#define do_fastboot(a, b, c, d) 0
-
-#define fastboot_quick(a) 0
-#define fastboot_get_ep_num(a, b) 0
-#define fastboot_dump_memory(a, b) 0
-#define DBG_ALWS(x...)
-#define DBG_ERR(x...)
-#define DBG_DEBUG(x...)
-#define DBG_INFO(x...)
-
-
-#endif /*! CONFIG_FASTBOOT*/
-#endif /* FASTBOOT_H */
diff --git a/include/fsl_fastboot.h b/include/fsl_fastboot.h
new file mode 100644
index 0000000..5a38d99
--- /dev/null
+++ b/include/fsl_fastboot.h
@@ -0,0 +1,172 @@
+/*
+ * Copyright (C) 2010-2015 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#ifndef FSL_FASTBOOT_H
+#define FSL_FASTBOOT_H
+
+#define FASTBOOT_PTENTRY_FLAGS_REPEAT(n) (n & 0x0f)
+#define FASTBOOT_PTENTRY_FLAGS_REPEAT_MASK 0x0000000F
+
+/* Writes happen a block at a time.
+ If the write fails, go to next block
+ NEXT_GOOD_BLOCK and CONTIGOUS_BLOCK can not both be set */
+#define FASTBOOT_PTENTRY_FLAGS_WRITE_NEXT_GOOD_BLOCK 0x00000010
+
+/* Find a contiguous block big enough for a the whole file
+ NEXT_GOOD_BLOCK and CONTIGOUS_BLOCK can not both be set */
+#define FASTBOOT_PTENTRY_FLAGS_WRITE_CONTIGUOUS_BLOCK 0x00000020
+
+/* Write the file with write.i */
+#define FASTBOOT_PTENTRY_FLAGS_WRITE_I 0x00000100
+
+/* Write the file with write.trimffs */
+#define FASTBOOT_PTENTRY_FLAGS_WRITE_TRIMFFS 0x00000200
+
+/* Write the file as a series of variable/value pairs
+ using the setenv and saveenv commands */
+#define FASTBOOT_PTENTRY_FLAGS_WRITE_ENV 0x00000400
+
+#define FASTBOOT_MMC_BOOT_PARTITION_ID 1
+#define FASTBOOT_MMC_USER_PARTITION_ID 0
+#define FASTBOOT_MMC_NONE_PARTITION_ID -1
+
+#define FASTBOOT_PARTITION_BOOT "boot"
+#define FASTBOOT_PARTITION_RECOVERY "recovery"
+#define FASTBOOT_PARTITION_SYSTEM "system"
+#define FASTBOOT_PARTITION_BOOTLOADER "bootloader"
+#define FASTBOOT_PARTITION_DATA "data"
+
+enum {
+ DEV_SATA,
+ DEV_MMC,
+ DEV_NAND
+};
+
+struct cmd_fastboot_interface {
+ /* This function is called when a buffer has been
+ recieved from the client app.
+ The buffer is a supplied by the board layer and must be unmodified.
+ The buffer_size is how much data is passed in.
+ Returns 0 on success
+ Returns 1 on failure
+
+ Set by cmd_fastboot */
+ int (*rx_handler)(const unsigned char *buffer,
+ unsigned int buffer_size);
+
+ /* This function is called when an exception has
+ occurred in the device code and the state
+ off fastboot needs to be reset
+
+ Set by cmd_fastboot */
+ void (*reset_handler)(void);
+
+ /* A getvar string for the product name
+ It can have a maximum of 60 characters
+
+ Set by board */
+ char *product_name;
+
+ /* A getvar string for the serial number
+ It can have a maximum of 60 characters
+
+ Set by board */
+ char *serial_no;
+
+ /* Nand block size
+ Supports the write option WRITE_NEXT_GOOD_BLOCK
+
+ Set by board */
+ unsigned int nand_block_size;
+
+ /* Nand oob size
+ Set by board */
+ unsigned int nand_oob_size;
+
+ /* Transfer buffer, for handling flash updates
+ Should be multiple of the nand_block_size
+ Care should be take so it does not overrun bootloader memory
+ Controlled by the configure variable CFG_FASTBOOT_TRANSFER_BUFFER
+
+ Set by board */
+ unsigned char *transfer_buffer;
+
+ /* How big is the transfer buffer
+ Controlled by the configure variable
+ CFG_FASTBOOT_TRANSFER_BUFFER_SIZE
+
+ Set by board */
+ unsigned int transfer_buffer_size;
+
+};
+
+/* flash partitions are defined in terms of blocks
+** (flash erase units)
+*/
+struct fastboot_ptentry {
+ /* The logical name for this partition, null terminated */
+ char name[16];
+ /* The start wrt the nand part, must be multiple of nand block size */
+ unsigned int start;
+ /* The length of the partition, must be multiple of nand block size */
+ unsigned int length;
+ /* Controls the details of how operations are done on the partition
+ See the FASTBOOT_PTENTRY_FLAGS_*'s defined below */
+ unsigned int flags;
+ /* partition id: 0 - normal partition; 1 - boot partition */
+ unsigned int partition_id;
+ /* partition number in block device */
+ unsigned int partition_index;
+};
+
+struct fastboot_device_info {
+ unsigned char type;
+ unsigned char dev_id;
+};
+
+extern struct fastboot_device_info fastboot_devinfo;
+
+/* Prepare the fastboot environments,
+ * should be executed before "fastboot" cmd
+ */
+void fastboot_setup(void);
+
+
+/* The Android-style flash handling */
+
+/* tools to populate and query the partition table */
+void fastboot_flash_add_ptn(struct fastboot_ptentry *ptn);
+struct fastboot_ptentry *fastboot_flash_find_ptn(const char *name);
+struct fastboot_ptentry *fastboot_flash_get_ptn(unsigned n);
+unsigned int fastboot_flash_get_ptn_count(void);
+void fastboot_flash_dump_ptn(void);
+
+
+/* Check the board special boot mode reboot to fastboot mode. */
+int fastboot_check_and_clean_flag(void);
+
+/* Set the flag which reboot to fastboot mode*/
+void fastboot_enable_flag(void);
+
+/*check if fastboot mode is requested by user*/
+void check_fastboot(void);
+
+/*Setup board-relative fastboot environment */
+void board_fastboot_setup(void);
+
+#ifdef CONFIG_FASTBOOT_STORAGE_NAND
+/*Save parameters for NAND storage partitions */
+void save_parts_values(struct fastboot_ptentry *ptn,
+ unsigned int offset, unsigned int size);
+
+/* Checks parameters for NAND storage partitions
+ * Return 1 if the parameter is not set
+ * Return 0 if the parameter has been set
+ */
+int check_parts_values(struct fastboot_ptentry *ptn);
+#endif /*CONFIG_FASTBOOT_STORAGE_NAND*/
+
+#endif /* FSL_FASTBOOT_H */
diff --git a/include/image.h b/include/image.h
index 3844be6..f73c222 100644
--- a/include/image.h
+++ b/include/image.h
@@ -1082,6 +1082,8 @@ int android_image_get_kernel(const struct andr_img_hdr *hdr, int verify,
ulong *os_data, ulong *os_len);
int android_image_get_ramdisk(const struct andr_img_hdr *hdr,
ulong *rd_data, ulong *rd_len);
+int android_image_get_fdt(const struct andr_img_hdr *hdr,
+ ulong *fdt_data, ulong *fdt_len);
ulong android_image_get_end(const struct andr_img_hdr *hdr);
ulong android_image_get_kload(const struct andr_img_hdr *hdr);