From: Jaehoon Chung <jh80.chung@samsung.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v3 19/25] rockchip: Add an MMC driver
Date: Fri, 26 Jun 2015 19:23:39 +0900 [thread overview]
Message-ID: <558D282B.1080300@samsung.com> (raw)
In-Reply-To: <1435102150-29438-20-git-send-email-sjg@chromium.org>
Hi, Simon.
On 06/24/2015 08:29 AM, Simon Glass wrote:
> Add an MMC driver which supports RK3288, but may also support other SoCs.
> It uses the Designware MMC device.
I think good that use "rockchip_dw_mmc" instead of "rockchip_mmc".
How about? If you agree, need to change the function prefix from "rockchip_mmc" to "rockchip_dw_mmc".
>
> Signed-off-by: Simon Glass <sjg@chromium.org>
> ---
>
> Changes in v3: None
> Changes in v2: None
>
> drivers/mmc/Kconfig | 9 +++++
> drivers/mmc/Makefile | 1 +
> drivers/mmc/rockchip_mmc.c | 98 ++++++++++++++++++++++++++++++++++++++++++++++
> 3 files changed, 108 insertions(+)
> create mode 100644 drivers/mmc/rockchip_mmc.c
>
> diff --git a/drivers/mmc/Kconfig b/drivers/mmc/Kconfig
> index 3e835f7..cd5f53c 100644
> --- a/drivers/mmc/Kconfig
> +++ b/drivers/mmc/Kconfig
> @@ -10,6 +10,15 @@ config DM_MMC
> appear as block devices in U-Boot and can support filesystems such
> as EXT4 and FAT.
>
> +config ROCKCHIP_MMC
> + bool "Rockchip SD/MMC controller support"
> + depends on DM && OF_CONTROL
> + help
> + This enables support for the Rockchip SD/MMM controller, which is
> + based on Designware IP. The device is compatible with SD 3.0,
> + SDIO 3.0 and MMC 4.5 and supports common eMMC chips as well as
> + removeable SD and micro-SD cards.
removeable -> removable
Only support MMC4.5? then MMC5.0 or upper version?
Doesn't need to describe the Spec version?
Best Regards,
Jaehoon Chung
> +
> config SH_SDHI
> bool "SuperH/Renesas ARM SoCs on-chip SDHI host controller support"
> depends on RMOBILE
> diff --git a/drivers/mmc/Makefile b/drivers/mmc/Makefile
> index 2680c63..83e1ff3 100644
> --- a/drivers/mmc/Makefile
> +++ b/drivers/mmc/Makefile
> @@ -28,6 +28,7 @@ obj-$(CONFIG_MXS_MMC) += mxsmmc.o
> obj-$(CONFIG_OMAP_HSMMC) += omap_hsmmc.o
> obj-$(CONFIG_X86) += pci_mmc.o
> obj-$(CONFIG_PXA_MMC_GENERIC) += pxa_mmc_gen.o
> +obj-$(CONFIG_ROCKCHIP_MMC) += rockchip_mmc.o
> obj-$(CONFIG_SUPPORT_EMMC_RPMB) += rpmb.o
> obj-$(CONFIG_S3C_SDI) += s3c_sdi.o
> obj-$(CONFIG_S5P_SDHCI) += s5p_sdhci.o
> diff --git a/drivers/mmc/rockchip_mmc.c b/drivers/mmc/rockchip_mmc.c
> new file mode 100644
> index 0000000..430e7e5
> --- /dev/null
> +++ b/drivers/mmc/rockchip_mmc.c
> @@ -0,0 +1,98 @@
> +/*
> + * Copyright (c) 2013 Google, Inc
> + *
> + * SPDX-License-Identifier: GPL-2.0+
> + */
> +
> +#include <common.h>
> +#include <clk.h>
> +#include <dm.h>
> +#include <dwmmc.h>
> +#include <errno.h>
> +#include <syscon.h>
> +#include <asm/arch/clock.h>
> +#include <asm/arch/periph.h>
> +#include <linux/err.h>
> +
> +DECLARE_GLOBAL_DATA_PTR;
> +
> +struct rockchip_mmc_priv {
> + struct udevice *clk;
> + struct rk3288_grf *grf;
> + struct dwmci_host host;
> +};
> +
> +static uint rockchip_mmc_get_mmc_clk(struct dwmci_host *host, uint freq)
> +{
> + struct udevice *dev = host->priv;
> + struct rockchip_mmc_priv *priv = dev_get_priv(dev);
> + int ret;
> +
> + ret = clk_set_periph_rate(priv->clk, PERIPH_ID_SDMMC0 + host->dev_index,
> + freq);
> + if (ret < 0) {
> + debug("%s: err=%d\n", __func__, ret);
> + return ret;
> + }
> +
> + return freq;
> +}
> +
> +static int rockchip_mmc_ofdata_to_platdata(struct udevice *dev)
> +{
> + struct rockchip_mmc_priv *priv = dev_get_priv(dev);
> + struct dwmci_host *host = &priv->host;
> +
> + host->name = dev->name;
> + host->ioaddr = (void *)dev_get_addr(dev);
> + host->buswidth = fdtdec_get_int(gd->fdt_blob, dev->of_offset,
> + "bus-width", 4);
> + host->get_mmc_clk = rockchip_mmc_get_mmc_clk;
> + host->priv = dev;
> +
> + /* TODO(sjg at chromium.org): Remove the need for this hack */
> + host->dev_index = (ulong)host->ioaddr == 0xff0f0000 ? 0 : 1;
> +
> + return 0;
> +}
> +
> +int rockchip_mmc_probe(struct udevice *dev)
> +{
> + struct mmc_uclass_priv *upriv = dev_get_uclass_priv(dev);
> + struct rockchip_mmc_priv *priv = dev_get_priv(dev);
> + struct dwmci_host *host = &priv->host;
> + u32 minmax[2];
> + int ret;
> +
> + priv->grf = syscon_get_first_range(ROCKCHIP_SYSCON_GRF);
> + if (IS_ERR(priv->grf))
> + return PTR_ERR(priv->grf);
> + ret = uclass_get_device(UCLASS_CLK, CLK_GENERAL, &priv->clk);
> + if (ret)
> + return ret;
> +
> + ret = fdtdec_get_int_array(gd->fdt_blob, dev->of_offset,
> + "clock-freq-min-max", minmax, 2);
> + if (!ret)
> + ret = add_dwmci(host, minmax[1], minmax[0]);
> + if (ret)
> + return ret;
> +
> + upriv->mmc = host->mmc;
> +
> + return 0;
> +}
> +
> +static const struct udevice_id rockchip_mmc_ids[] = {
> + { .compatible = "rockchip,rk3288-dw-mshc" },
> + { }
> +};
> +
> +U_BOOT_DRIVER(rockchip_mmc_drv) = {
> + .name = "rockchip_mmc",
> + .id = UCLASS_MMC,
> + .of_match = rockchip_mmc_ids,
> + .ofdata_to_platdata = rockchip_mmc_ofdata_to_platdata,
> + .probe = rockchip_mmc_probe,
> + .priv_auto_alloc_size = sizeof(struct dwmci_host),
> +};
>
next prev parent reply other threads:[~2015-06-26 10:23 UTC|newest]
Thread overview: 54+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-23 23:28 [U-Boot] [PATCH v3 00/25] dm: Introduce Rockchip RK3288 support Simon Glass
2015-06-23 23:28 ` [U-Boot] [PATCH v3 01/25] rockchip: Add serial support Simon Glass
2015-06-23 23:28 ` [U-Boot] [PATCH v3 02/25] rockchip: Bring in RK3288 device tree file includes and bindings Simon Glass
2015-06-23 23:28 ` [U-Boot] [PATCH v3 03/25] rockchip: rk3288: dts: Make core devices available early Simon Glass
2015-06-23 23:28 ` [U-Boot] [PATCH v3 04/25] mkimage: Allow padding to any length Simon Glass
2015-06-25 22:35 ` Joe Hershberger
2015-06-23 23:28 ` [U-Boot] [PATCH v3 05/25] mkimage: Allow the original file size to be recorded Simon Glass
2015-06-25 22:36 ` Joe Hershberger
2015-06-23 23:28 ` [U-Boot] [PATCH v3 06/25] rockchip: Add the rkimage format to mkimage Simon Glass
2015-06-24 4:13 ` Naoki FUKAUMI
2015-06-23 23:28 ` [U-Boot] [PATCH v3 07/25] rockchip: Add support for the SD image Simon Glass
2015-06-23 23:28 ` [U-Boot] [PATCH v3 08/25] rockchip: Add support for the SPI image Simon Glass
2015-06-24 4:05 ` Naoki FUKAUMI
2015-06-23 23:28 ` [U-Boot] [PATCH v3 09/25] rockchip: gpio: Add rockchip GPIO driver Simon Glass
2015-06-23 23:28 ` [U-Boot] [PATCH v3 10/25] rockchip: Add basic peripheral and clock definitions Simon Glass
2015-06-23 23:28 ` [U-Boot] [PATCH v3 11/25] power: Add support for ACT8846 PMIC Simon Glass
2015-06-23 23:28 ` [U-Boot] [PATCH v3 12/25] power: regulator: Add a driver for ACT8846 regulators Simon Glass
2015-06-23 23:28 ` [U-Boot] [PATCH v3 13/25] rockchip: rk3288: Add clock driver Simon Glass
2015-06-23 23:28 ` [U-Boot] [PATCH v3 14/25] rockchip: rk3288: Add header files for PMU and GRF Simon Glass
2015-06-23 23:29 ` [U-Boot] [PATCH v3 15/25] rockchip: rk3288: Add SoC reset driver Simon Glass
2015-06-23 23:29 ` [U-Boot] [PATCH v3 16/25] rockchip: rk3288: Add a simple syscon driver Simon Glass
2015-06-23 23:29 ` [U-Boot] [PATCH v3 17/25] rockchip: rk3288: Add pinctrl driver Simon Glass
2015-07-06 17:24 ` Masahiro Yamada
2015-07-06 17:32 ` Simon Glass
2015-07-08 9:35 ` Masahiro Yamada
2015-07-08 20:27 ` Simon Glass
2015-06-23 23:29 ` [U-Boot] [PATCH v3 18/25] rockchip: rk3288: Add SDRAM init Simon Glass
2015-06-23 23:29 ` [U-Boot] [PATCH v3 19/25] rockchip: Add an MMC driver Simon Glass
2015-06-26 10:23 ` Jaehoon Chung [this message]
2015-07-28 17:00 ` Andre Przywara
2015-06-23 23:29 ` [U-Boot] [PATCH v3 20/25] rockchip: Add core SoC start-up code Simon Glass
2015-06-23 23:29 ` [U-Boot] [PATCH v3 21/25] rockchip: Add I2C driver Simon Glass
2015-06-23 23:29 ` [U-Boot] [PATCH v3 22/25] rockchip: Add SPI driver Simon Glass
2015-06-24 5:56 ` Jagan Teki
2015-06-23 23:29 ` [U-Boot] [PATCH v3 23/25] rockchip: Add basic support for firefly-rk3288 Simon Glass
2015-06-23 23:29 ` [U-Boot] [PATCH v3 24/25] rockchip: Add basic support for jerry Simon Glass
2015-06-23 23:29 ` [U-Boot] [PATCH v3 25/25] rockchip: Add a simple README Simon Glass
2015-06-24 4:24 ` Naoki FUKAUMI
2015-07-27 17:08 ` Andre Przywara
2015-07-27 17:13 ` Simon Glass
2015-08-06 15:35 ` Christoph Fritz
2015-08-06 23:19 ` Simon Glass
2015-06-24 4:02 ` [U-Boot] [PATCH v3 00/25] dm: Introduce Rockchip RK3288 support Naoki FUKAUMI
2015-06-24 16:54 ` Kevin Hilman
2015-06-24 17:39 ` Heiko Stübner
2015-06-24 17:48 ` Simon Glass
[not found] ` <559BE2F2.3020509@googlemail.com>
2015-07-08 15:25 ` Simon Glass
2015-07-09 13:16 ` Ulrich Prinz
2015-07-09 18:10 ` Simon Glass
[not found] ` <55A2E5DB.5010604@googlemail.com>
2015-07-13 21:05 ` Ulrich Prinz
2015-07-14 15:54 ` Simon Glass
2015-07-10 8:24 ` Sjoerd Simons
2015-07-10 16:08 ` Simon Glass
2015-07-12 18:26 ` Paul Kocialkowski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=558D282B.1080300@samsung.com \
--to=jh80.chung@samsung.com \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox