From patchwork Mon Oct 14 16:56:14 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mateusz Zalega X-Patchwork-Id: 283354 X-Patchwork-Delegate: promsoft@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from theia.denx.de (theia.denx.de [85.214.87.163]) by ozlabs.org (Postfix) with ESMTP id 190A02C0339 for ; Tue, 15 Oct 2013 03:57:31 +1100 (EST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id BFCFA4A0A5; Mon, 14 Oct 2013 18:57:23 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at theia.denx.de Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id hJ5C9qET-Vkq; Mon, 14 Oct 2013 18:57:23 +0200 (CEST) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 2780E4A09C; Mon, 14 Oct 2013 18:57:12 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id BDD384A088 for ; Mon, 14 Oct 2013 18:57:07 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at theia.denx.de Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 39WkGG7s-tGA for ; Mon, 14 Oct 2013 18:57:01 +0200 (CEST) X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 (only DNSBL check requested) Received: from mailout3.w1.samsung.com (mailout3.w1.samsung.com [210.118.77.13]) by theia.denx.de (Postfix) with ESMTP id C143E4A08F for ; Mon, 14 Oct 2013 18:57:00 +0200 (CEST) Received: from eucpsbgm1.samsung.com (unknown [203.254.199.244]) by mailout3.w1.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0MUO007QP4ERMOB0@mailout3.w1.samsung.com> for u-boot@lists.denx.de; Mon, 14 Oct 2013 17:56:51 +0100 (BST) X-AuditID: cbfec7f4-b7f0a6d000007b1b-6a-525c22539993 Received: from eusync3.samsung.com ( [203.254.199.213]) by eucpsbgm1.samsung.com (EUCPMTA) with SMTP id 49.C7.31515.3522C525; Mon, 14 Oct 2013 17:56:51 +0100 (BST) Received: from kernelpanic.DIGITAL.local ([106.120.53.14]) by eusync3.samsung.com (Oracle Communications Messaging Server 7u4-23.01(7.0.4.23.0) 64bit (built Aug 10 2011)) with ESMTPA id <0MUO0085I4EQO700@eusync3.samsung.com>; Mon, 14 Oct 2013 17:56:51 +0100 (BST) From: Mateusz Zalega To: u-boot@lists.denx.de Date: Mon, 14 Oct 2013 18:56:14 +0200 Message-id: <1381769774-10975-2-git-send-email-m.zalega@samsung.com> X-Mailer: git-send-email 1.8.2.1 In-reply-to: <1381769774-10975-1-git-send-email-m.zalega@samsung.com> References: <1381769774-10975-1-git-send-email-m.zalega@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrPJMWRmVeSWpSXmKPExsVy+t/xq7rBSjFBBr2bWCzu/etnsjjb9Ibd Yu67KUwWHUdaGC3e7u1kd2D1OHtnB6NH35ZVjAFMUVw2Kak5mWWpRfp2CVwZq6b1MRc8tqlo ujWTvYHxvlEXIyeHhICJxO+7LUwQtpjEhXvr2boYuTiEBJYySqzdeh7K6WeSeL/tGDtIFZuA tsSNvfPBbBEBCYlf/VcZQYqYBdYySjROv8YGkhAWcJdobXrDCmKzCKhKfHqwESzOK+Aisepo CzvEOgWJ49u3MYLYnAKuEp0nP7OA2EJANYuXvmKbwMi7gJFhFaNoamlyQXFSeq6hXnFibnFp Xrpecn7uJkZIoHzZwbj4mNUhRgEORiUe3gCBmCAh1sSy4srcQ4wSHMxKIry5b6ODhHhTEiur Uovy44tKc1KLDzEycXBKNTBaBPd0FVSs6bfW1FRW+ZpTe2Cdp8O22+xHkk6IbuWdKKO4177l b5TXiukfHhsfm5m6T+SyV91tQRer3JnvNXaXbOjgvPp7/cTH03euqDdSd2eddtDxzdzwC/83 /pxRb9d0Y2djgOCvP/vDP6w99a2n197d4+eeeZt1HDmPr5L9uirSS1fQ9bKdEktxRqKhFnNR cSIAZwcFF/IBAAA= Cc: Arkadiusz Wlodarczyk , Kyungmin Park Subject: [U-Boot] [PATCH v4 2/2] arm:goni:dfu Add support for DFU at GONI target X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.11 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: u-boot-bounces@lists.denx.de Errors-To: u-boot-bounces@lists.denx.de From: Arkadiusz Wlodarczyk Proper adjustment for supporting DFU at GONI target has been made. The s5p_goni.h file has been updated. Moreover the code for low level USB initialization has been added to GONI board code. The malloc pool has been enlarged in order to support larger buffer sizes needed by DFU implementation. Change-Id: I1b4953368176e8a7588abb0da37de6321f835698 Signed-off-by: Arkadiusz Wlodarczyk Signed-off-by: Kyungmin Park Signed-off-by: Mateusz Zalega Tested-by: Arkadiusz Wlodarczyk Tested-by: Mateusz Zalega Cc: Minkyu Kang --- Changes since v3: - adjusted to match recently accepted USB patches --- board/samsung/goni/goni.c | 80 ++++++++++++++++++++++++++++++++++++++++++++++ include/configs/s5p_goni.h | 69 ++++++++++++++++++++++++++------------- 2 files changed, 127 insertions(+), 22 deletions(-) diff --git a/board/samsung/goni/goni.c b/board/samsung/goni/goni.c index 366f648..3a2f686 100644 --- a/board/samsung/goni/goni.c +++ b/board/samsung/goni/goni.c @@ -13,6 +13,9 @@ #include #include #include +#include +#include + DECLARE_GLOBAL_DATA_PTR; static struct s5pc110_gpio *s5pc110_gpio; @@ -172,4 +175,81 @@ struct s3c_plat_otg_data s5pc110_otg_data = { .regs_otg = S5PC110_OTG_BASE, .usb_phy_ctrl = S5PC110_USB_PHY_CONTROL, }; + +int board_usb_init(int index, enum board_usb_init_type init) +{ + debug("USB_udc_probe\n"); + s3c_udc_probe(&s5pc110_otg_data); + return 0; +} +#endif + +#ifdef CONFIG_USB_GADGET_MASS_STORAGE +static int ums_read_sector(struct ums_device *ums_dev, + ulong start, lbaint_t blkcnt, void *buf) +{ + if (ums_dev->mmc->block_dev.block_read(ums_dev->dev_num, + start + ums_dev->offset, + blkcnt, buf) != blkcnt) + return -1; + + return 0; +} + +static int ums_write_sector(struct ums_device *ums_dev, + ulong start, lbaint_t blkcnt, const void *buf) +{ + if (ums_dev->mmc->block_dev.block_write(ums_dev->dev_num, + start + ums_dev->offset, + blkcnt, buf) != blkcnt) + return -1; + + return 0; +} + +static void ums_get_capacity(struct ums_device *ums_dev, + long long int *capacity) +{ + long long int tmp_capacity; + + tmp_capacity = (long long int) ((ums_dev->offset + ums_dev->part_size) + * SECTOR_SIZE); + *capacity = ums_dev->mmc->capacity - tmp_capacity; +} + +static struct ums_board_info ums_board = { + .read_sector = ums_read_sector, + .write_sector = ums_write_sector, + .get_capacity = ums_get_capacity, + .name = "GONI UMS disk", + .ums_dev = { + .mmc = NULL, + .dev_num = 0, + .offset = 0, + .part_size = 0. + }, +}; + +struct ums_board_info *board_ums_init(unsigned int dev_num, unsigned int offset, + unsigned int part_size) +{ + struct mmc *mmc; + + mmc = find_mmc_device(dev_num); + /* + * mmc initialization is necessary prior to the ums command usage + * due to fact that on goni target environment is read from oneNand + * memory, so the mmc remains uninitialized when u-boot prompt appears + */ + if (!mmc || mmc_init(mmc)) + return NULL; + + ums_board.ums_dev.mmc = mmc; + ums_board.ums_dev.dev_num = dev_num; + ums_board.ums_dev.offset = offset; + ums_board.ums_dev.part_size = part_size; + + return &ums_board; +} + #endif diff --git a/include/configs/s5p_goni.h b/include/configs/s5p_goni.h index fd441c8..218cf3d 100644 --- a/include/configs/s5p_goni.h +++ b/include/configs/s5p_goni.h @@ -41,7 +41,7 @@ * Size of malloc() pool * 1MB = 0x100000, 0x100000 = 1024 * 1024 */ -#define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE + (1 << 20)) +#define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE + (16 << 20)) /* * select serial console configuration */ @@ -71,28 +71,46 @@ #define CONFIG_CMD_CACHE #define CONFIG_CMD_REGINFO #define CONFIG_CMD_ONENAND -#define CONFIG_CMD_MTDPARTS #define CONFIG_CMD_MMC +#define CONFIG_CMD_DFU +#define CONFIG_CMD_GPT -#define CONFIG_BOOTDELAY 1 -#define CONFIG_ZERO_BOOTDELAY_CHECK +/* USB Composite download gadget - g_dnl */ +#define CONFIG_USBDOWNLOAD_GADGET +#define CONFIG_DFU_FUNCTION +#define CONFIG_DFU_MMC -#define CONFIG_MTD_DEVICE -#define CONFIG_MTD_PARTITIONS +/* USB Samsung's IDs */ +#define CONFIG_G_DNL_VENDOR_NUM 0x04E8 +#define CONFIG_G_DNL_PRODUCT_NUM 0x6601 +#define CONFIG_G_DNL_MANUFACTURER "Samsung" -/* Actual modem binary size is 16MiB. Add 2MiB for bad block handling */ -#define MTDIDS_DEFAULT "onenand0=samsung-onenand" -#define MTDPARTS_DEFAULT "mtdparts=samsung-onenand:1m(bootloader)"\ - ",256k(params)"\ - ",2816k(config)"\ - ",8m(csa)"\ - ",7m(kernel)"\ - ",1m(log)"\ - ",12m(modem)"\ - ",60m(qboot)"\ - ",-(UBI)\0" +#define CONFIG_BOOTDELAY 1 +#define CONFIG_ZERO_BOOTDELAY_CHECK -#define NORMAL_MTDPARTS_DEFAULT MTDPARTS_DEFAULT +#define CONFIG_DFU_ALT \ + "u-boot mmc 80 400;" \ + "uImage fat 0 2\0" \ + +/* partitions definitions */ +#define PARTS_CSA "csa-mmc" +#define PARTS_BOOTLOADER "u-boot" +#define PARTS_BOOT "boot" +#define PARTS_ROOT "platform" +#define PARTS_DATA "data" +#define PARTS_CSC "csc" +#define PARTS_UMS "ums" + +#define PARTS_DEFAULT \ + "uuid_disk=${uuid_gpt_disk};" \ + "name="PARTS_CSA",size=8MiB,uuid=${uuid_gpt_"PARTS_CSA"};" \ + "name="PARTS_BOOTLOADER",size=60MiB," \ + "uuid=${uuid_gpt_"PARTS_BOOTLOADER"};" \ + "name="PARTS_BOOT",size=100MiB,uuid=${uuid_gpt_"PARTS_BOOT"};" \ + "name="PARTS_ROOT",size=1GiB,uuid=${uuid_gpt_"PARTS_ROOT"};" \ + "name="PARTS_DATA",size=3GiB,uuid=${uuid_gpt_"PARTS_DATA"};" \ + "name="PARTS_CSC",size=150MiB,uuid=${uuid_gpt_"PARTS_CSC"};" \ + "name="PARTS_UMS",size=-,uuid=${uuid_gpt_"PARTS_UMS"}\0" \ #define CONFIG_BOOTCOMMAND "run mmcboot" @@ -104,7 +122,7 @@ #define CONFIG_COMMON_BOOT "${console} ${meminfo} ${mtdparts}" #define CONFIG_BOOTARGS "root=/dev/mtdblock8 ubi.mtd=8 ubi.mtd=3 ubi.mtd=6" \ - " rootfstype=cramfs " CONFIG_COMMON_BOOT + " rootfstype=cramfs rootwait " CONFIG_COMMON_BOOT #define CONFIG_UPDATEB "updateb=onenand erase 0x0 0x100000;" \ " onenand write 0x32008000 0x0 0x100000\0" @@ -152,19 +170,19 @@ "verify=n\0" \ "rootfstype=ext4\0" \ "console=" CONFIG_DEFAULT_CONSOLE \ - "mtdparts=" MTDPARTS_DEFAULT \ "meminfo=mem=80M mem=256M@0x40000000 mem=128M@0x50000000\0" \ "loaduimage=fatload mmc ${mmcdev}:${mmcbootpart} 0x30007FC0 uImage\0" \ "mmcdev=0\0" \ "mmcbootpart=2\0" \ "mmcrootpart=5\0" \ + "partitions=" PARTS_DEFAULT \ "mmcblk=/dev/mmcblk1p1\0" \ "bootblock=9\0" \ "ubiblock=8\0" \ "ubi=enabled\0" \ - "opts=always_resume=1" + "opts=always_resume=1\0" \ + "dfu_alt_info=" CONFIG_DFU_ALT "\0" -/* Miscellaneous configurable options */ #define CONFIG_SYS_LONGHELP /* undef to save memory */ #define CONFIG_SYS_HUSH_PARSER /* use "hush" command parser */ #define CONFIG_SYS_PROMPT "Goni # " @@ -208,6 +226,10 @@ #define CONFIG_CMD_EXT4 #define CONFIG_FAT_WRITE +/* GPT */ +#define CONFIG_EFI_PARTITION +#define CONFIG_PARTITION_UUIDS + #define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_LOAD_ADDR - 0x1000000) #define CONFIG_SYS_CACHELINE_SIZE 64 @@ -232,5 +254,8 @@ #define CONFIG_USB_GADGET #define CONFIG_USB_GADGET_S3C_UDC_OTG #define CONFIG_USB_GADGET_DUALSPEED +#define CONFIG_USB_GADGET_VBUS_DRAW 2 +#define CONFIG_CMD_USB_MASS_STORAGE +#define CONFIG_USB_GADGET_MASS_STORAGE #endif /* __CONFIG_H */