From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.6 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI,NICE_REPLY_A, SPF_HELO_NONE,SPF_PASS,UNWANTED_LANGUAGE_BODY,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3AEA1C432BE for ; Sat, 28 Aug 2021 05:15:17 +0000 (UTC) Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 78FC060F25 for ; Sat, 28 Aug 2021 05:15:16 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 78FC060F25 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=samsung.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=lists.denx.de Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 5EEF6832CA; Sat, 28 Aug 2021 07:15:14 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=samsung.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; unprotected) header.d=samsung.com header.i=@samsung.com header.b="S6bL+pPx"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 7F0B8832DA; Sat, 28 Aug 2021 07:15:12 +0200 (CEST) Received: from mailout3.samsung.com (mailout3.samsung.com [203.254.224.33]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 53EBC83259 for ; Sat, 28 Aug 2021 07:15:06 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=samsung.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=jh80.chung@samsung.com Received: from epcas1p2.samsung.com (unknown [182.195.41.46]) by mailout3.samsung.com (KnoxPortal) with ESMTP id 20210828051502epoutp0370c4b87500fe72eea278eaa39e864ab9~fYII3L6fL3272832728epoutp034 for ; Sat, 28 Aug 2021 05:15:02 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout3.samsung.com 20210828051502epoutp0370c4b87500fe72eea278eaa39e864ab9~fYII3L6fL3272832728epoutp034 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1630127702; bh=OV/T6hGsvXb790QHpp/NZm9M7YxN2T1TsIrGvHcJTIU=; h=Subject:To:Cc:From:Date:In-Reply-To:References:From; b=S6bL+pPxPw+pwBl+VymbUvDxLUm6Gx2KO7R94USNiDvi/s08AQwtwpPIqcJWj31N6 991P1bEJCSoBavCfXUBO9UdOGOUT7JbTjUnLWpB25MSBnvi5KjO3Etpa9pYgwAodcP Yc1FV1gIG4rGoN9uVegOWALhOUw4wkAKLTjk/EiE= Received: from epsnrtp1.localdomain (unknown [182.195.42.162]) by epcas1p3.samsung.com (KnoxPortal) with ESMTP id 20210828051501epcas1p3700cd9a8c817e814d9e43e8c291a1428~fYIH2y9of3232332323epcas1p3l; Sat, 28 Aug 2021 05:15:01 +0000 (GMT) Received: from epsmges1p2.samsung.com (unknown [182.195.38.235]) by epsnrtp1.localdomain (Postfix) with ESMTP id 4GxPsY3PfRz4x9Pr; Sat, 28 Aug 2021 05:14:57 +0000 (GMT) Received: from epcas1p2.samsung.com ( [182.195.41.46]) by epsmges1p2.samsung.com (Symantec Messaging Gateway) with SMTP id 86.61.09827.156C9216; Sat, 28 Aug 2021 14:14:57 +0900 (KST) Received: from epsmtrp1.samsung.com (unknown [182.195.40.13]) by epcas1p1.samsung.com (KnoxPortal) with ESMTPA id 20210828051456epcas1p1d31da98fd1474c0453795cf337394a72~fYIDWY5Go1360013600epcas1p1R; Sat, 28 Aug 2021 05:14:56 +0000 (GMT) Received: from epsmgms1p1new.samsung.com (unknown [182.195.42.41]) by epsmtrp1.samsung.com (KnoxPortal) with ESMTP id 20210828051456epsmtrp1b2a308640c96fd41444bfe43f505a7a0~fYIDVyUNq2756727567epsmtrp1V; Sat, 28 Aug 2021 05:14:56 +0000 (GMT) X-AuditID: b6c32a36-c65ff70000002663-47-6129c651fb05 Received: from epsmtip1.samsung.com ( [182.195.34.30]) by epsmgms1p1new.samsung.com (Symantec Messaging Gateway) with SMTP id 17.95.09091.056C9216; Sat, 28 Aug 2021 14:14:56 +0900 (KST) Received: from [10.113.113.235] (unknown [10.113.113.235]) by epsmtip1.samsung.com (KnoxPortal) with ESMTPA id 20210828051456epsmtip14b786c77c375074dafb1970157d7faf4~fYIDF5CFW1886018860epsmtip1y; Sat, 28 Aug 2021 05:14:56 +0000 (GMT) Subject: Re: [PATCH 10/11] sandbox: mmc: Support a backing file To: Simon Glass , U-Boot Mailing List Cc: Peng Fan From: Jaehoon Chung Message-ID: <781fd53f-70ee-fd50-152f-ba4ef4ab3d44@samsung.com> Date: Sat, 28 Aug 2021 14:15:45 +0900 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 MIME-Version: 1.0 In-Reply-To: <20210818214022.10.I42087e8088f8d9fb704821d73f17d7ae246a2e69@changeid> Content-Language: en-US Content-Transfer-Encoding: 7bit X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrFKsWRmVeSWpSXmKPExsWy7bCmnm7gMc1Eg7bpIhY/Vn1htfi2ZRuj xdu9newOzB6zGy6yeJy9s4PRY+O7HUwBzFHZNhmpiSmpRQqpecn5KZl56bZK3sHxzvGmZgaG uoaWFuZKCnmJuam2Si4+AbpumTlAm5QUyhJzSoFCAYnFxUr6djZF+aUlqQoZ+cUltkqpBSk5 BaYFesWJucWleel6eaklVoYGBkamQIUJ2RlN//YzFWyXr/jR9JCpgfGwRBcjJ4eEgInEhx8v WLsYuTiEBHYwSiz6NZUZwvnEKLH503wmCOcbo8TG5x/ZYVo+fuqGSuxllFhz9zlU/3tGiWnf fwE5HBzCAvYSLw5agTSICARI/Ft/jwXEZhaQl5j+ah0riM0moCOx/dtxJpByXgE7ie/vAkDC LAKqEvsal7KB2KICkRLndy8Aa+UVEJQ4OfMJmM0pECzRufYVO8RIcYlbT0AOhRi//e0csA8k BO6xSyzubmSFONpF4tuNc4wQtrDEq+NboJ6RknjZ3wZlV0vsaj4D1dzBKHFrWxMTRMJYYv/S yWCHMgtoSqzfpQ8RVpTY+XsuI8RiPol3X3vAXpcQ4JXoaBOCKFGRuPT6JRPMqrtP/kOd4yFx 6fBb9gmMirOQvDYLyTuzkLwzC2HxAkaWVYxiqQXFuempxYYFRvDITs7P3cQIToRaZjsYJ739 oHeIkYmD8RCjBAezkgjvgu9qiUK8KYmVValF+fFFpTmpxYcYTYGBPZFZSjQ5H5iK80riDU0s DUzMjIxNLAzNDJXEeRlfySQKCaQnlqRmp6YWpBbB9DFxcEo1MGn8ERUQ5DzB4/f5xbcn+h+C mn5Prvr9OfJk3Z4v20/mm1yrdmnlT+tf8DTEYRJz97EX/Ol2GZ8+Of5g5XDZOH1L7gbekliH N20W6kcM3Csf73/RrnBoygTlsNrdj6Z6WvTufzYpPfTxJZ3XDfs2N605uUp7se4p/j9OC2Yc X/MpeGuAn8/Fv5vuc0bVfvW9v22KcMiMyV8bGI5r7dS/K9BZeZLx/+Jy56K404bre+tXh8/t ZGzKZLvwrejK/P/nO0ovCcoId1uWBuvLCv/+e9Wr3NqqzX3phjOGAv0mewVDpjHVZ82pef7d 1pfjTnZfmPwPfa9Ig5rVFoY/ziW478nV/BZtVLJa9qPGpe4HQkosxRmJhlrMRcWJAAiBFo8N BAAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrBLMWRmVeSWpSXmKPExsWy7bCSnG7AMc1Eg0l9XBY/Vn1htfi2ZRuj xdu9newOzB6zGy6yeJy9s4PRY+O7HUwBzFFcNimpOZllqUX6dglcGU3/9jMVbJev+NH0kKmB 8bBEFyMnh4SAicTHT91MXYxcHEICuxklfnU9Y4NISEl8fjoVyOYAsoUlDh8uhqh5yygx9e0f FpC4sIC9xIuDViDlIgJ+Ei2zlzKC2MwC8hLTX61jhai/wiix4vsvVpAEm4COxPZvx5lAenkF 7CS+vwsACbMIqErsa1wKtlZUIFLi84JXYOW8AoISJ2c+YQGxOQWCJTrXvmKHmK8u8WfeJWYI W1zi1pP5TDB7t7+dwzyBUWgWkvZZSFpmIWmZhaRlASPLKkbJ1ILi3PTcYsMCw7zUcr3ixNzi 0rx0veT83E2M4MDX0tzBuH3VB71DjEwcjIcYJTiYlUR4F3xXSxTiTUmsrEotyo8vKs1JLT7E KM3BoiTOe6HrZLyQQHpiSWp2ampBahFMlomDU6qByVx+2ivO6m2XJoqskE3f7XPd1yTgYpaV zKPnzRpu805X2ol+frBns/o8ma7Lqnsa9aU3vRXcoxY4/4S66eKVtR3b9s38WvdxNrf5yQ2h 2v27LS0ZnpzduCdwzS+tJbaLAkLXKm9PrmET3aimJ+HeVtNZMFW4Q+DR2jkn7ofLLmxcaaB3 npvv6LsQnlj1IDm1tAzuubX3zUKbY35PdROIiXPhPvDVyOTJm+5VZz6169VtbEgPWbtS+yBf TvXTV0vvCF0Wl2evq+x/5JPYrREqZaymM9/yU+IryWel7JtdtcOdg+ZvzptZKbZ8J6/2vvhS 1h1bNr9caslTf+yo6oY4zpvCrBM7ztXdNTxyef1nJZbijERDLeai4kQAziHAVesCAAA= X-CMS-MailID: 20210828051456epcas1p1d31da98fd1474c0453795cf337394a72 X-Msg-Generator: CA Content-Type: text/plain; charset="utf-8" X-Sendblock-Type: SVC_REQ_APPROVE CMS-TYPE: 101P DLP-Filter: Pass X-CFilter-Loop: Reflected X-CMS-RootMailID: 20210819034053epcas1p45de60c9a3a1f5a34ab0a47ff55980372 References: <20210819034033.1617201-1-sjg@chromium.org> <20210818214022.10.I42087e8088f8d9fb704821d73f17d7ae246a2e69@changeid> X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.2 at phobos.denx.de X-Virus-Status: Clean On 8/19/21 12:40 PM, Simon Glass wrote: > Provide a way for sandbox MMC to present data from a backing file. This > allows a filesystem to be created on the host and easily served via an > emulated mmc device. > > Signed-off-by: Simon Glass Reviewed-by: Jaehoon Chung Best Regards, Jaehoon Chung > --- > > doc/device-tree-bindings/mmc/sandbox,mmc.txt | 18 ++++++++ > drivers/mmc/sandbox_mmc.c | 46 ++++++++++++++++---- > 2 files changed, 55 insertions(+), 9 deletions(-) > create mode 100644 doc/device-tree-bindings/mmc/sandbox,mmc.txt > > diff --git a/doc/device-tree-bindings/mmc/sandbox,mmc.txt b/doc/device-tree-bindings/mmc/sandbox,mmc.txt > new file mode 100644 > index 00000000000..1170bcd6a00 > --- /dev/null > +++ b/doc/device-tree-bindings/mmc/sandbox,mmc.txt > @@ -0,0 +1,18 @@ > +Sandbox MMC > +=========== > + > +Required properties: > +- compatible : "sandbox,mmc" > + > +Optional properties: > +- filename : Name of backing file, if any. This is mapped into the MMC device > + so can be used to provide a filesystem or other test data > + > + > +Example > +------- > + > +mmc2 { > + compatible = "sandbox,mmc"; > + non-removable; > +}; > diff --git a/drivers/mmc/sandbox_mmc.c b/drivers/mmc/sandbox_mmc.c > index 895fbffecfc..1139951c626 100644 > --- a/drivers/mmc/sandbox_mmc.c > +++ b/drivers/mmc/sandbox_mmc.c > @@ -9,23 +9,26 @@ > #include > #include > #include > +#include > #include > +#include > #include > > struct sandbox_mmc_plat { > struct mmc_config cfg; > struct mmc mmc; > + const char *fname; > }; > > -#define MMC_CSIZE 0 > -#define MMC_CMULT 8 /* 8 because the card is high-capacity */ > -#define MMC_BL_LEN_SHIFT 10 > -#define MMC_BL_LEN BIT(MMC_BL_LEN_SHIFT) > -#define MMC_CAPACITY (((MMC_CSIZE + 1) << (MMC_CMULT + 2)) \ > - * MMC_BL_LEN) /* 1 MiB */ > +#define MMC_CMULT 8 /* 8 because the card is high-capacity */ > +#define MMC_BL_LEN_SHIFT 10 > +#define MMC_BL_LEN BIT(MMC_BL_LEN_SHIFT) > +#define SIZE_MULTIPLE ((1 << (MMC_CMULT + 2)) * MMC_BL_LEN) > > struct sandbox_mmc_priv { > - u8 buf[MMC_CAPACITY]; > + int csize; /* CSIZE value to report */ > + char *buf; > + int size; > }; > > /** > @@ -60,8 +63,8 @@ static int sandbox_mmc_send_cmd(struct udevice *dev, struct mmc_cmd *cmd, > case MMC_CMD_SEND_CSD: > cmd->response[0] = 0; > cmd->response[1] = (MMC_BL_LEN_SHIFT << 16) | > - ((MMC_CSIZE >> 16) & 0x3f); > - cmd->response[2] = (MMC_CSIZE & 0xffff) << 16; > + ((priv->csize >> 16) & 0x3f); > + cmd->response[2] = (priv->csize & 0xffff) << 16; > cmd->response[3] = 0; > break; > case SD_CMD_SWITCH_FUNC: { > @@ -143,6 +146,8 @@ static int sandbox_mmc_of_to_plat(struct udevice *dev) > struct blk_desc *blk; > int ret; > > + plat->fname = dev_read_string(dev, "filename"); > + > ret = mmc_of_parse(dev, cfg); > if (ret) > return ret; > @@ -156,6 +161,29 @@ static int sandbox_mmc_of_to_plat(struct udevice *dev) > static int sandbox_mmc_probe(struct udevice *dev) > { > struct sandbox_mmc_plat *plat = dev_get_plat(dev); > + struct sandbox_mmc_priv *priv = dev_get_priv(dev); > + int ret; > + > + if (plat->fname) { > + ret = os_map_file(plat->fname, OS_O_RDWR | OS_O_CREAT, > + (void **)&priv->buf, &priv->size); > + if (ret) { > + log_err("%s: Unable to map file '%s'\n", dev->name, > + plat->fname); > + return ret; > + } > + priv->csize = priv->size / SIZE_MULTIPLE - 1; > + } else { > + priv->csize = 0; > + priv->size = (priv->csize + 1) * SIZE_MULTIPLE; /* 1 MiB */ > + > + priv->buf = malloc(priv->size); > + if (!priv->buf) { > + log_err("%s: Not enough memory (%x bytes)\n", > + dev->name, priv->size); > + return -ENOMEM; > + } > + } > > return mmc_init(&plat->mmc); > } >