From patchwork Mon Feb 18 10:18:06 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: a.wlodarczyk@samsung.com X-Patchwork-Id: 221245 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 1D0CC2C0A2A for ; Mon, 18 Feb 2013 22:00:10 +1100 (EST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 1ED0B4A12C; Mon, 18 Feb 2013 12:00:01 +0100 (CET) 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 M0751SndgyMt; Mon, 18 Feb 2013 12:00:00 +0100 (CET) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 3950C4A11A; Mon, 18 Feb 2013 11:59:46 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 872C94A108 for ; Mon, 18 Feb 2013 11:28:46 +0100 (CET) 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 l0gT2IRWp3Fi for ; Mon, 18 Feb 2013 11:28:45 +0100 (CET) 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 mailout1.samsung.com (mailout1.samsung.com [203.254.224.24]) by theia.denx.de (Postfix) with ESMTP id DF54E4A0F1 for ; Mon, 18 Feb 2013 11:28:44 +0100 (CET) Received: from epcpsbgm2.samsung.com (epcpsbgm2 [203.254.230.27]) by mailout1.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0MIE00LHVVANGPO0@mailout1.samsung.com> for u-boot@lists.denx.de; Mon, 18 Feb 2013 19:18:40 +0900 (KST) X-AuditID: cbfee61b-b7fb06d000000f28-c9-512200005247 Received: from epmmp2 ( [203.254.227.17]) by epcpsbgm2.samsung.com (EPCPMTA) with SMTP id 51.AE.03880.00002215; Mon, 18 Feb 2013 19:18:40 +0900 (KST) Received: from mcdsrvbld02.digital.local ([106.116.37.23]) by mmp2.samsung.com (Oracle Communications Messaging Server 7u4-24.01 (7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTPA id <0MIE00G8IVAABVC0@mmp2.samsung.com> for u-boot@lists.denx.de; Mon, 18 Feb 2013 19:18:39 +0900 (KST) From: a.wlodarczyk@samsung.com To: u-boot@lists.denx.de Date: Mon, 18 Feb 2013 11:18:06 +0100 Message-id: <1361182686-16882-3-git-send-email-a.wlodarczyk@samsung.com> X-Mailer: git-send-email 1.7.10 In-reply-to: <1361182686-16882-1-git-send-email-a.wlodarczyk@samsung.com> References: <1361182686-16882-1-git-send-email-a.wlodarczyk@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrEJMWRmVeSWpSXmKPExsVy+t9jQV0GBqVAg7k72C3e7u1kd2D0OHtn B2MAYxSXTUpqTmZZapG+XQJXxp5bH5gK1klXbP/ZwdrA+Fasi5GTQ0LAROLI42fsELaYxIV7 69m6GLk4hASmM0p0rDkP5Sxmkrh9aQJQFQcHm4CcxKUWsAYRAQmJX/1XGUFqmAXmMEp8Prqd GSQhLGAvcWH5FzYQm0VAVWLlialMIL28Ah4Syzu1IZbJSzy93wdWwingKTH10BswWwio5PXK 5ywTGHkXMDKsYhRNLUguKE5KzzXSK07MLS7NS9dLzs/dxAj2+TPpHYyrGiwOMQpwMCrx8DLk KwYKsSaWFVfmHmKU4GBWEuFtvwMU4k1JrKxKLcqPLyrNSS0+xCjNwaIkzst46kmAkEB6Yklq dmpqQWoRTJaJg1OqgbFr6127lY+3zn67nEF6AkedgtvWyxZygu7d88/qLHmXcF62R/BscXbI wb3OO1bnpWevf2088ci+AvULSuw//ln+LOLO9/2/4iT3SS3RGaphJlJvGrW2GhraVp+c0q9/ x3Nr9gkFFZXAj//T/uutft/cJRJwfrH08z61konbpIS6Fincf/nw/jwlluKMREMt5qLiRAAq X23z9QEAAA== X-Mailman-Approved-At: Mon, 18 Feb 2013 11:59:43 +0100 Cc: Kyungmin Park , Arkadiusz Wlodarczyk Subject: [U-Boot] [PATCH 3/3] arm:goni: Add support for USB mass storage 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 Signed-off-by: Arkadiusz Wlodarczyk Signed-off-by: Kyungmin Park Tested-by: Arkadiusz Wlodarczyk Cc: Minkyu Kang --- Changes Switch on USB gadget mass storage and ums command in configuration for goni target; Add code supporting USB gadget mass storage in board/samsung/goni/goni.c --- Depends on implementation of USB mass storage for Samsung. http://patchwork.ozlabs.org/patch/219744/ http://patchwork.ozlabs.org/patch/219746/ http://patchwork.ozlabs.org/patch/219745/ --- board/samsung/goni/goni.c | 68 ++++++++++++++++++++++++++++++++++++++++++++ include/configs/s5p_goni.h | 5 +++ 2 files changed, 73 insertions(+), 0 deletions(-) diff --git a/board/samsung/goni/goni.c b/board/samsung/goni/goni.c index 3c53106..a09daca 100644 --- a/board/samsung/goni/goni.c +++ b/board/samsung/goni/goni.c @@ -29,6 +29,7 @@ #include #include #include +#include DECLARE_GLOBAL_DATA_PTR; static struct s5pc110_gpio *s5pc110_gpio; @@ -163,3 +164,70 @@ void board_usb_init(void) } #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 whenu-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 e8f2639..1cfbb88 100644 --- a/include/configs/s5p_goni.h +++ b/include/configs/s5p_goni.h @@ -269,4 +269,9 @@ #define CONFIG_USB_GADGET_DUALSPEED #define CONFIG_USB_GADGET_VBUS_DRAW 2 +#define CONFIG_CMD_USB_MASS_STORAGE +#if defined(CONFIG_CMD_USB_MASS_STORAGE) +#define CONFIG_USB_GADGET_MASS_STORAGE +#endif + #endif /* __CONFIG_H */