aboutsummaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/dfu/Kconfig1
-rw-r--r--drivers/gpio/pca953x_gpio.c2
-rw-r--r--drivers/mmc/dw_mmc.c4
-rw-r--r--drivers/mtd/Kconfig6
-rw-r--r--drivers/mtd/mtd_uboot.c62
-rw-r--r--drivers/serial/serial-uclass.c2
6 files changed, 67 insertions, 10 deletions
diff --git a/drivers/dfu/Kconfig b/drivers/dfu/Kconfig
index 51ab484c2a..4692736c9d 100644
--- a/drivers/dfu/Kconfig
+++ b/drivers/dfu/Kconfig
@@ -30,6 +30,7 @@ config DFU_MMC
config DFU_NAND
bool "NAND back end for DFU"
+ depends on CMD_MTDPARTS
help
This option enables using DFU to read and write to NAND based
storage.
diff --git a/drivers/gpio/pca953x_gpio.c b/drivers/gpio/pca953x_gpio.c
index 535b2f12ea..0bb484498a 100644
--- a/drivers/gpio/pca953x_gpio.c
+++ b/drivers/gpio/pca953x_gpio.c
@@ -227,7 +227,7 @@ static int pca953x_xlate(struct udevice *dev, struct gpio_desc *desc,
struct ofnode_phandle_args *args)
{
desc->offset = args->args[0];
- desc->flags = args->args[1] & (GPIO_ACTIVE_LOW ? GPIOD_ACTIVE_LOW : 0);
+ desc->flags = args->args[1] & GPIO_ACTIVE_LOW ? GPIOD_ACTIVE_LOW : 0;
return 0;
}
diff --git a/drivers/mmc/dw_mmc.c b/drivers/mmc/dw_mmc.c
index 3c702b3ed8..7544b84ab6 100644
--- a/drivers/mmc/dw_mmc.c
+++ b/drivers/mmc/dw_mmc.c
@@ -317,6 +317,10 @@ static int dwmci_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd,
} else if (mask & DWMCI_INTMSK_RE) {
debug("%s: Response Error.\n", __func__);
return -EIO;
+ } else if ((cmd->resp_type & MMC_RSP_CRC) &&
+ (mask & DWMCI_INTMSK_RCRC)) {
+ debug("%s: Response CRC Error.\n", __func__);
+ return -EIO;
}
diff --git a/drivers/mtd/Kconfig b/drivers/mtd/Kconfig
index 11cf12bb55..0050fb2b9b 100644
--- a/drivers/mtd/Kconfig
+++ b/drivers/mtd/Kconfig
@@ -22,12 +22,6 @@ config MTD_DEVICE
Adds the MTD device infrastructure from the Linux kernel.
Needed for mtdparts command support.
-config MTD_PARTITIONS
- bool "Add MTD Partioning infrastructure"
- help
- Adds the MTD partitioning infrastructure from the Linux
- kernel. Needed for UBI support.
-
config FLASH_CFI_DRIVER
bool "Enable CFI Flash driver"
help
diff --git a/drivers/mtd/mtd_uboot.c b/drivers/mtd/mtd_uboot.c
index 7d7a11c990..5ca560c968 100644
--- a/drivers/mtd/mtd_uboot.c
+++ b/drivers/mtd/mtd_uboot.c
@@ -92,12 +92,70 @@ static void mtd_probe_uclass_mtd_devs(void) { }
#endif
#if defined(CONFIG_MTD_PARTITIONS)
+extern void board_mtdparts_default(const char **mtdids,
+ const char **mtdparts);
+
+static const char *get_mtdids(void)
+{
+ __maybe_unused const char *mtdparts = NULL;
+ const char *mtdids = env_get("mtdids");
+
+ if (mtdids)
+ return mtdids;
+
+#if defined(CONFIG_SYS_MTDPARTS_RUNTIME)
+ board_mtdparts_default(&mtdids, &mtdparts);
+#elif defined(MTDIDS_DEFAULT)
+ mtdids = MTDIDS_DEFAULT;
+#elif defined(CONFIG_MTDIDS_DEFAULT)
+ mtdids = CONFIG_MTDIDS_DEFAULT;
+#endif
+
+ if (mtdids)
+ env_set("mtdids", mtdids);
+
+ return mtdids;
+}
+
+#define MTDPARTS_MAXLEN 512
+
+static const char *get_mtdparts(void)
+{
+ __maybe_unused const char *mtdids = NULL;
+ static char tmp_parts[MTDPARTS_MAXLEN];
+ static bool use_defaults = true;
+ const char *mtdparts = NULL;
+
+ if (gd->flags & GD_FLG_ENV_READY)
+ mtdparts = env_get("mtdparts");
+ else if (env_get_f("mtdparts", tmp_parts, sizeof(tmp_parts)) != -1)
+ mtdparts = tmp_parts;
+
+ if (mtdparts || !use_defaults)
+ return mtdparts;
+
+#if defined(CONFIG_SYS_MTDPARTS_RUNTIME)
+ board_mtdparts_default(&mtdids, &mtdparts);
+#elif defined(MTDPARTS_DEFAULT)
+ mtdparts = MTDPARTS_DEFAULT;
+#elif defined(CONFIG_MTDPARTS_DEFAULT)
+ mtdparts = CONFIG_MTDPARTS_DEFAULT;
+#endif
+
+ if (mtdparts)
+ env_set("mtdparts", mtdparts);
+
+ use_defaults = false;
+
+ return mtdparts;
+}
+
int mtd_probe_devices(void)
{
static char *old_mtdparts;
static char *old_mtdids;
- const char *mtdparts = env_get("mtdparts");
- const char *mtdids = env_get("mtdids");
+ const char *mtdparts = get_mtdparts();
+ const char *mtdids = get_mtdids();
bool remaining_partitions = true;
struct mtd_info *mtd;
diff --git a/drivers/serial/serial-uclass.c b/drivers/serial/serial-uclass.c
index e50f0aa851..665cca85cb 100644
--- a/drivers/serial/serial-uclass.c
+++ b/drivers/serial/serial-uclass.c
@@ -423,7 +423,7 @@ static int serial_post_probe(struct udevice *dev)
ops->setconfig += gd->reloc_off;
#if CONFIG_POST & CONFIG_SYS_POST_UART
if (ops->loop)
- ops->loop += gd->reloc_off
+ ops->loop += gd->reloc_off;
#endif
#endif
/* Set the baud rate */