odroid-xu3: config: enable DFU/THOR/UMS by add configs and environment

This patch enables all functions required to use DFU/THOR and UMS:
- DWC3: core, gadget, Samsung DWC3 PHY
- USB gadget: endpoint autoconf, downloader, DFU, THOR, UMS

The CONFIG_EXTRA_ENV_SETINGS from exynos5-common.h is redefined
and appended by dfu environment setting and some system settings.

The boot is still using $distro_boot as previous.

Signed-off-by: Inha Song <ideal.song@samsung.com>
Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com>
Signed-off-by: Przemyslaw Marczak <p.marczak@samsung.com>
Cc: Minkyu Kang <mk7.kang@samsung.com>
diff --git a/include/configs/odroid_xu3.h b/include/configs/odroid_xu3.h
index c395020..cf17f3d 100644
--- a/include/configs/odroid_xu3.h
+++ b/include/configs/odroid_xu3.h
@@ -35,8 +35,8 @@
 
 #undef CONFIG_ENV_SIZE
 #undef CONFIG_ENV_OFFSET
-#define CONFIG_ENV_SIZE			4096
-#define CONFIG_ENV_OFFSET		(SZ_1K * 1280) /* 1.25 MiB offset */
+#define CONFIG_ENV_SIZE			(SZ_1K * 16)
+#define CONFIG_ENV_OFFSET		(SZ_1K * 3136) /* ~3 MiB offset */
 
 #define CONFIG_SYS_INIT_SP_ADDR        (CONFIG_SYS_LOAD_ADDR - 0x1000000)
 
@@ -46,8 +46,92 @@
 #define CONFIG_USB_EHCI
 #define CONFIG_USB_EHCI_EXYNOS
 
+/* DWC3 */
+#define CONFIG_USB_DWC3
+#define CONFIG_USB_DWC3_GADGET
+#define CONFIG_USB_DWC3_PHY_SAMSUNG
+
+/* USB gadget */
+#define CONFIG_USB_GADGET
+#define CONFIG_USB_GADGET_DUALSPEED
+#define CONFIG_USB_GADGET_VBUS_DRAW	2
+
+/* Downloader */
+#define CONFIG_G_DNL_VENDOR_NUM		0x04E8
+#define CONFIG_G_DNL_PRODUCT_NUM	0x6601
+#define CONFIG_G_DNL_MANUFACTURER	"Samsung"
+#define CONFIG_USBDOWNLOAD_GADGET
+
+/* DFU */
+#define CONFIG_DFU_FUNCTION
+#define CONFIG_DFU_MMC
+#define CONFIG_CMD_DFU
+#define CONFIG_SYS_DFU_DATA_BUF_SIZE	SZ_32M
+#define DFU_DEFAULT_POLL_TIMEOUT	300
+
+/* THOR */
+#define CONFIG_G_DNL_THOR_VENDOR_NUM	CONFIG_G_DNL_VENDOR_NUM
+#define CONFIG_G_DNL_THOR_PRODUCT_NUM	0x685D
+#define CONFIG_THOR_FUNCTION
+#define CONFIG_CMD_THOR_DOWNLOAD
+
+/* UMS */
+#define CONFIG_G_DNL_UMS_VENDOR_NUM	0x0525
+#define CONFIG_G_DNL_UMS_PRODUCT_NUM	0xA4A5
+#define CONFIG_USB_GADGET_MASS_STORAGE
+#define CONFIG_CMD_USB_MASS_STORAGE
+
 /* FIXME: MUST BE REMOVED AFTER TMU IS TURNED ON */
 #undef CONFIG_EXYNOS_TMU
 #undef CONFIG_TMU_CMD_DTT
 
+#define CONFIG_DFU_ALT_SYSTEM               \
+	"uImage fat 0 1;"                   \
+	"zImage fat 0 1;"                   \
+	"Image.itb fat 0 1;"                \
+	"uInitrd fat 0 1;"                  \
+	"boot.scr fat 0 1;"                 \
+	"boot.cmd fat 0 1;"                 \
+	"exynos5422-odroidxu3.dtb fat 0 1;" \
+	"boot part 0 1;"                    \
+	"root part 0 2\0"
+
+#define CONFIG_DFU_ALT_BOOT_EMMC           \
+	"u-boot raw 0x3e 0x800 mmcpart 1;" \
+	"bl1 raw 0x0 0x1e mmcpart 1;"      \
+	"bl2 raw 0x1e 0x1d mmcpart 1;"     \
+	"tzsw raw 0x83e 0x200 mmcpart 1;"  \
+	"params.bin raw 0x1880 0x20\0"
+
+#define CONFIG_DFU_ALT_BOOT_SD   \
+	"u-boot raw 0x3f 0x800;" \
+	"bl1 raw 0x1 0x1e;"      \
+	"bl2 raw 0x1f 0x1d;"     \
+	"tzsw raw 0x83f 0x200;"  \
+	"params.bin raw 0x1880 0x20\0"
+
+/* Enable: board/samsung/common/misc.c to use set_dfu_alt_info() */
+#define CONFIG_MISC_COMMON
+#define CONFIG_SET_DFU_ALT_INFO
+#define CONFIG_SET_DFU_ALT_BUF_LEN	(SZ_1K)
+
+/* Define new extra env settings, including DFU settings */
+#undef CONFIG_EXTRA_ENV_SETTINGS
+#define CONFIG_EXTRA_ENV_SETTINGS \
+	EXYNOS_DEVICE_SETTINGS \
+	EXYNOS_FDTFILE_SETTING \
+	MEM_LAYOUT_ENV_SETTINGS \
+	BOOTENV \
+	"bootdelay=0\0" \
+	"rootfstype=ext4\0" \
+	"console=" CONFIG_DEFAULT_CONSOLE \
+	"fdtfile=exynos5422-odroidxu3.dtb\0" \
+	"boardname=odroidxu3\0" \
+	"mmcbootdev=0\0" \
+	"mmcrootdev=0\0" \
+	"mmcbootpart=1\0" \
+	"mmcrootpart=2\0" \
+	"dfu_alt_system="CONFIG_DFU_ALT_SYSTEM \
+	"dfu_alt_info=Autoset by THOR/DFU command run.\0"
+
 #endif	/* __CONFIG_H */