All of lore.kernel.org
 help / color / mirror / Atom feed
From: Simon Glass <sjg@chromium.org>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 06/27] mmc: Move MMC boot code into its own file
Date: Sun, 12 Jun 2016 23:30:18 -0600	[thread overview]
Message-ID: <1465795839-16632-7-git-send-email-sjg@chromium.org> (raw)
In-Reply-To: <1465795839-16632-1-git-send-email-sjg@chromium.org>

Rather than having an #ifdef in the main mmc.c file, control this feature
from the Makefile by moving the code into its own file.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

 drivers/mmc/Makefile      |   3 ++
 drivers/mmc/mmc.c         | 126 +-------------------------------------------
 drivers/mmc/mmc_boot.c    | 131 ++++++++++++++++++++++++++++++++++++++++++++++
 drivers/mmc/mmc_private.h |  11 ++++
 4 files changed, 146 insertions(+), 125 deletions(-)
 create mode 100644 drivers/mmc/mmc_boot.c

diff --git a/drivers/mmc/Makefile b/drivers/mmc/Makefile
index 3da4817..b44a12e 100644
--- a/drivers/mmc/Makefile
+++ b/drivers/mmc/Makefile
@@ -25,6 +25,9 @@ obj-$(CONFIG_FSL_ESDHC) += fsl_esdhc.o
 obj-$(CONFIG_FTSDC010) += ftsdc010_mci.o
 obj-$(CONFIG_FTSDC021) += ftsdc021_sdhci.o
 obj-$(CONFIG_GENERIC_MMC) += mmc.o
+ifdef CONFIG_SUPPORT_EMMC_BOOT
+obj-$(CONFIG_GENERIC_MMC) += mmc_boot.o
+endif
 obj-$(CONFIG_GENERIC_ATMEL_MCI) += gen_atmel_mci.o
 obj-$(CONFIG_KONA_SDHCI) += kona_sdhci.o
 obj-$(CONFIG_MMC_SPI) += mmc_spi.o
diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
index 40ab506..6593f25 100644
--- a/drivers/mmc/mmc.c
+++ b/drivers/mmc/mmc.c
@@ -463,8 +463,7 @@ static int mmc_send_ext_csd(struct mmc *mmc, u8 *ext_csd)
 	return err;
 }
 
-
-static int mmc_switch(struct mmc *mmc, u8 set, u8 index, u8 value)
+int mmc_switch(struct mmc *mmc, u8 set, u8 index, u8 value)
 {
 	struct mmc_cmd cmd;
 	int timeout = 1000;
@@ -1683,126 +1682,3 @@ int mmc_initialize(bd_t *bis)
 	mmc_do_preinit();
 	return 0;
 }
-
-#ifdef CONFIG_SUPPORT_EMMC_BOOT
-/*
- * This function changes the size of boot partition and the size of rpmb
- * partition present on EMMC devices.
- *
- * Input Parameters:
- * struct *mmc: pointer for the mmc device strcuture
- * bootsize: size of boot partition
- * rpmbsize: size of rpmb partition
- *
- * Returns 0 on success.
- */
-
-int mmc_boot_partition_size_change(struct mmc *mmc, unsigned long bootsize,
-				unsigned long rpmbsize)
-{
-	int err;
-	struct mmc_cmd cmd;
-
-	/* Only use this command for raw EMMC moviNAND. Enter backdoor mode */
-	cmd.cmdidx = MMC_CMD_RES_MAN;
-	cmd.resp_type = MMC_RSP_R1b;
-	cmd.cmdarg = MMC_CMD62_ARG1;
-
-	err = mmc_send_cmd(mmc, &cmd, NULL);
-	if (err) {
-		debug("mmc_boot_partition_size_change: Error1 = %d\n", err);
-		return err;
-	}
-
-	/* Boot partition changing mode */
-	cmd.cmdidx = MMC_CMD_RES_MAN;
-	cmd.resp_type = MMC_RSP_R1b;
-	cmd.cmdarg = MMC_CMD62_ARG2;
-
-	err = mmc_send_cmd(mmc, &cmd, NULL);
-	if (err) {
-		debug("mmc_boot_partition_size_change: Error2 = %d\n", err);
-		return err;
-	}
-	/* boot partition size is multiple of 128KB */
-	bootsize = (bootsize * 1024) / 128;
-
-	/* Arg: boot partition size */
-	cmd.cmdidx = MMC_CMD_RES_MAN;
-	cmd.resp_type = MMC_RSP_R1b;
-	cmd.cmdarg = bootsize;
-
-	err = mmc_send_cmd(mmc, &cmd, NULL);
-	if (err) {
-		debug("mmc_boot_partition_size_change: Error3 = %d\n", err);
-		return err;
-	}
-	/* RPMB partition size is multiple of 128KB */
-	rpmbsize = (rpmbsize * 1024) / 128;
-	/* Arg: RPMB partition size */
-	cmd.cmdidx = MMC_CMD_RES_MAN;
-	cmd.resp_type = MMC_RSP_R1b;
-	cmd.cmdarg = rpmbsize;
-
-	err = mmc_send_cmd(mmc, &cmd, NULL);
-	if (err) {
-		debug("mmc_boot_partition_size_change: Error4 = %d\n", err);
-		return err;
-	}
-	return 0;
-}
-
-/*
- * Modify EXT_CSD[177] which is BOOT_BUS_WIDTH
- * based on the passed in values for BOOT_BUS_WIDTH, RESET_BOOT_BUS_WIDTH
- * and BOOT_MODE.
- *
- * Returns 0 on success.
- */
-int mmc_set_boot_bus_width(struct mmc *mmc, u8 width, u8 reset, u8 mode)
-{
-	int err;
-
-	err = mmc_switch(mmc, EXT_CSD_CMD_SET_NORMAL, EXT_CSD_BOOT_BUS_WIDTH,
-			 EXT_CSD_BOOT_BUS_WIDTH_MODE(mode) |
-			 EXT_CSD_BOOT_BUS_WIDTH_RESET(reset) |
-			 EXT_CSD_BOOT_BUS_WIDTH_WIDTH(width));
-
-	if (err)
-		return err;
-	return 0;
-}
-
-/*
- * Modify EXT_CSD[179] which is PARTITION_CONFIG (formerly BOOT_CONFIG)
- * based on the passed in values for BOOT_ACK, BOOT_PARTITION_ENABLE and
- * PARTITION_ACCESS.
- *
- * Returns 0 on success.
- */
-int mmc_set_part_conf(struct mmc *mmc, u8 ack, u8 part_num, u8 access)
-{
-	int err;
-
-	err = mmc_switch(mmc, EXT_CSD_CMD_SET_NORMAL, EXT_CSD_PART_CONF,
-			 EXT_CSD_BOOT_ACK(ack) |
-			 EXT_CSD_BOOT_PART_NUM(part_num) |
-			 EXT_CSD_PARTITION_ACCESS(access));
-
-	if (err)
-		return err;
-	return 0;
-}
-
-/*
- * Modify EXT_CSD[162] which is RST_n_FUNCTION based on the given value
- * for enable.  Note that this is a write-once field for non-zero values.
- *
- * Returns 0 on success.
- */
-int mmc_set_rst_n_function(struct mmc *mmc, u8 enable)
-{
-	return mmc_switch(mmc, EXT_CSD_CMD_SET_NORMAL, EXT_CSD_RST_N_FUNCTION,
-			  enable);
-}
-#endif
diff --git a/drivers/mmc/mmc_boot.c b/drivers/mmc/mmc_boot.c
new file mode 100644
index 0000000..756a982
--- /dev/null
+++ b/drivers/mmc/mmc_boot.c
@@ -0,0 +1,131 @@
+/*
+ * Copyright (C) 2016 Google, Inc
+ * Written by Amar <amarendra.xt@samsung.com>
+ *
+ * SPDX-License-Identifier:	GPL-2.0+
+ */
+
+#include <common.h>
+#include <mmc.h>
+#include "mmc_private.h"
+
+/*
+ * This function changes the size of boot partition and the size of rpmb
+ * partition present on EMMC devices.
+ *
+ * Input Parameters:
+ * struct *mmc: pointer for the mmc device strcuture
+ * bootsize: size of boot partition
+ * rpmbsize: size of rpmb partition
+ *
+ * Returns 0 on success.
+ */
+
+int mmc_boot_partition_size_change(struct mmc *mmc, unsigned long bootsize,
+				unsigned long rpmbsize)
+{
+	int err;
+	struct mmc_cmd cmd;
+
+	/* Only use this command for raw EMMC moviNAND. Enter backdoor mode */
+	cmd.cmdidx = MMC_CMD_RES_MAN;
+	cmd.resp_type = MMC_RSP_R1b;
+	cmd.cmdarg = MMC_CMD62_ARG1;
+
+	err = mmc_send_cmd(mmc, &cmd, NULL);
+	if (err) {
+		debug("mmc_boot_partition_size_change: Error1 = %d\n", err);
+		return err;
+	}
+
+	/* Boot partition changing mode */
+	cmd.cmdidx = MMC_CMD_RES_MAN;
+	cmd.resp_type = MMC_RSP_R1b;
+	cmd.cmdarg = MMC_CMD62_ARG2;
+
+	err = mmc_send_cmd(mmc, &cmd, NULL);
+	if (err) {
+		debug("mmc_boot_partition_size_change: Error2 = %d\n", err);
+		return err;
+	}
+	/* boot partition size is multiple of 128KB */
+	bootsize = (bootsize * 1024) / 128;
+
+	/* Arg: boot partition size */
+	cmd.cmdidx = MMC_CMD_RES_MAN;
+	cmd.resp_type = MMC_RSP_R1b;
+	cmd.cmdarg = bootsize;
+
+	err = mmc_send_cmd(mmc, &cmd, NULL);
+	if (err) {
+		debug("mmc_boot_partition_size_change: Error3 = %d\n", err);
+		return err;
+	}
+	/* RPMB partition size is multiple of 128KB */
+	rpmbsize = (rpmbsize * 1024) / 128;
+	/* Arg: RPMB partition size */
+	cmd.cmdidx = MMC_CMD_RES_MAN;
+	cmd.resp_type = MMC_RSP_R1b;
+	cmd.cmdarg = rpmbsize;
+
+	err = mmc_send_cmd(mmc, &cmd, NULL);
+	if (err) {
+		debug("mmc_boot_partition_size_change: Error4 = %d\n", err);
+		return err;
+	}
+	return 0;
+}
+
+/*
+ * Modify EXT_CSD[177] which is BOOT_BUS_WIDTH
+ * based on the passed in values for BOOT_BUS_WIDTH, RESET_BOOT_BUS_WIDTH
+ * and BOOT_MODE.
+ *
+ * Returns 0 on success.
+ */
+int mmc_set_boot_bus_width(struct mmc *mmc, u8 width, u8 reset, u8 mode)
+{
+	int err;
+
+	err = mmc_switch(mmc, EXT_CSD_CMD_SET_NORMAL, EXT_CSD_BOOT_BUS_WIDTH,
+			 EXT_CSD_BOOT_BUS_WIDTH_MODE(mode) |
+			 EXT_CSD_BOOT_BUS_WIDTH_RESET(reset) |
+			 EXT_CSD_BOOT_BUS_WIDTH_WIDTH(width));
+
+	if (err)
+		return err;
+	return 0;
+}
+
+/*
+ * Modify EXT_CSD[179] which is PARTITION_CONFIG (formerly BOOT_CONFIG)
+ * based on the passed in values for BOOT_ACK, BOOT_PARTITION_ENABLE and
+ * PARTITION_ACCESS.
+ *
+ * Returns 0 on success.
+ */
+int mmc_set_part_conf(struct mmc *mmc, u8 ack, u8 part_num, u8 access)
+{
+	int err;
+
+	err = mmc_switch(mmc, EXT_CSD_CMD_SET_NORMAL, EXT_CSD_PART_CONF,
+			 EXT_CSD_BOOT_ACK(ack) |
+			 EXT_CSD_BOOT_PART_NUM(part_num) |
+			 EXT_CSD_PARTITION_ACCESS(access));
+
+	if (err)
+		return err;
+	return 0;
+}
+
+/*
+ * Modify EXT_CSD[162] which is RST_n_FUNCTION based on the given value
+ * for enable.  Note that this is a write-once field for non-zero values.
+ *
+ * Returns 0 on success.
+ */
+int mmc_set_rst_n_function(struct mmc *mmc, u8 enable)
+{
+	return mmc_switch(mmc, EXT_CSD_CMD_SET_NORMAL, EXT_CSD_RST_N_FUNCTION,
+			  enable);
+}
diff --git a/drivers/mmc/mmc_private.h b/drivers/mmc/mmc_private.h
index cfc4aca..3d189ba 100644
--- a/drivers/mmc/mmc_private.h
+++ b/drivers/mmc/mmc_private.h
@@ -106,4 +106,15 @@ void mmc_list_add(struct mmc *mmc);
  */
 int mmc_switch_part(struct mmc *mmc, unsigned int part_num);
 
+/**
+ * mmc_switch() - Issue and MMC switch mode command
+ *
+ * @mmc:	MMC device
+ * @set:	Unused
+ * @index:	Cmdarg index
+ * @value:	Cmdarg value
+ * @return 0 if OK, -ve on error
+ */
+int mmc_switch(struct mmc *mmc, u8 set, u8 index, u8 value);
+
 #endif /* _MMC_PRIVATE_H_ */
-- 
2.8.0.rc3.226.g39d4020

  parent reply	other threads:[~2016-06-13  5:30 UTC|newest]

Thread overview: 58+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-06-13  5:30 [U-Boot] [PATCH 00/27] dm: mmc: Add driver-model support for MMC operations Simon Glass
2016-06-13  5:30 ` [U-Boot] [PATCH 01/27] dm: mmc: dwmmc: Add comments to the dwmmc setup functions Simon Glass
2016-06-27 10:54   ` Jaehoon Chung
2016-07-03 22:28     ` Simon Glass
2016-07-03 23:24       ` Simon Glass
2016-06-13  5:30 ` [U-Boot] [PATCH 02/27] rockchip: Use 'select' instead of defaults in Kconfig Simon Glass
2016-07-03 23:24   ` Simon Glass
2016-06-13  5:30 ` [U-Boot] [PATCH 03/27] mmc: Add function declarations for mmc_bread() and mmc_switch_part() Simon Glass
2016-07-03 23:24   ` Simon Glass
2016-06-13  5:30 ` [U-Boot] [PATCH 04/27] dm: mmc: Move CONFIG_BLK code into the mmc uclass Simon Glass
2016-07-03 23:24   ` Simon Glass
2016-06-13  5:30 ` [U-Boot] [PATCH 05/27] dm: mmc: Move non-CONFIG_BLK code into mmc_legacy.c Simon Glass
2016-07-03 23:24   ` Simon Glass
2016-06-13  5:30 ` Simon Glass [this message]
2016-07-03 23:24   ` [U-Boot] [PATCH 06/27] mmc: Move MMC boot code into its own file Simon Glass
2016-06-13  5:30 ` [U-Boot] [PATCH 07/27] dm: mmc: rockchip: Support only CONFIG_BLK Simon Glass
2016-07-03 23:24   ` Simon Glass
2016-06-13  5:30 ` [U-Boot] [PATCH 08/27] mmc: Move tracing code into separate functions Simon Glass
2016-07-03 23:24   ` Simon Glass
2016-06-13  5:30 ` [U-Boot] [PATCH 09/27] rockchip: Disable CONFIG_SDHCI Simon Glass
2016-07-03 23:25   ` Simon Glass
2016-06-13  5:30 ` [U-Boot] [PATCH 10/27] dm: mmc: Add a way to use driver model for MMC operations Simon Glass
2016-07-03 23:25   ` Simon Glass
2016-06-13  5:30 ` [U-Boot] [PATCH 11/27] dm: mmc: dwmmc: Support CONFIG_DM_MMC_OPS Simon Glass
2016-07-03 23:25   ` Simon Glass
2016-06-13  5:30 ` [U-Boot] [PATCH 12/27] dm: mmc: rockchip: Enable CONFIG_DM_MMC_OPS for all boards Simon Glass
2016-07-03 23:25   ` Simon Glass
2016-06-13  5:30 ` [U-Boot] [PATCH 13/27] rockchip: Add MAINTAINER files for kylin_rk3036, evb_rk3036 Simon Glass
2016-07-03 23:25   ` Simon Glass
2016-06-13  5:30 ` [U-Boot] [PATCH 14/27] dm: sandbox: Convert to use CONFIG_CMD_MMC_OPS Simon Glass
2016-07-03 23:25   ` Simon Glass
2016-06-13  5:30 ` [U-Boot] [PATCH 15/27] dm: mmc: sdhci: Refactor configuration setup to support DM Simon Glass
2016-07-03 23:25   ` Simon Glass
2016-06-13  5:30 ` [U-Boot] [PATCH 16/27] dm: mmc: sdhci: Support CONFIG_BLK and CONFIG_DM_MMC_OPS Simon Glass
2016-07-03 23:25   ` Simon Glass
2016-06-13  5:30 ` [U-Boot] [PATCH 17/27] dm: mmc: msm_sdhci: " Simon Glass
2016-07-03 23:25   ` Simon Glass
2016-06-13  5:30 ` [U-Boot] [PATCH 18/27] dm: mmc: Move dragonboard410c to use " Simon Glass
2016-07-03 23:25   ` Simon Glass
2016-06-13  5:30 ` [U-Boot] [PATCH 19/27] dm: mmc: msmsdhic: Drop old MMC code Simon Glass
2016-07-03 23:25   ` Simon Glass
2016-06-13  5:30 ` [U-Boot] [PATCH 20/27] dm: spl: mmc: Support CONFIG_BLK in SPL MMC Simon Glass
2016-07-03 23:25   ` Simon Glass
2016-06-13  5:30 ` [U-Boot] [PATCH 21/27] dm: dfu: mmc: Support CONFIG_BLK in DFU for MMC Simon Glass
2016-07-03 23:25   ` Simon Glass
2016-06-13  5:30 ` [U-Boot] [PATCH 22/27] net: phy: marvell: Add a missing errno.h header Simon Glass
2016-06-13 18:21   ` Joe Hershberger
2016-06-14  5:55     ` Michal Simek
2016-07-05 22:24     ` Simon Glass
2016-06-13  5:30 ` [U-Boot] [PATCH 23/27] zynq: Increase the early malloc() size Simon Glass
2016-06-13  5:30 ` [U-Boot] [PATCH 24/27] dm: zynq: usb: Convert to CONFIG_DM_USB Simon Glass
2016-06-13 10:48   ` Michal Simek
2016-06-28  6:08   ` Siva Durga Prasad Paladugu
2016-07-04  4:49   ` Siva Durga Prasad Paladugu
2016-08-01  1:00     ` Simon Glass
2016-06-13  5:30 ` [U-Boot] [PATCH 25/27] dm: mmc: zynq: Convert zynq to use driver model for MMC Simon Glass
2016-06-13  5:30 ` [U-Boot] [PATCH 26/27] dm: mmc: Enable DM_MMC_OPS by default with DM_MMC Simon Glass
2016-06-13  5:30 ` [U-Boot] [PATCH 27/27] dm: blk: Enable CONFIG_BLK if DM_MMC is enabled Simon Glass

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=1465795839-16632-7-git-send-email-sjg@chromium.org \
    --to=sjg@chromium.org \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.