summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Rini <trini@konsulko.com>2020-10-08 10:20:53 -0400
committerTom Rini <trini@konsulko.com>2020-10-08 10:20:53 -0400
commita58d86db46456c4e14d4d140e419c4c5999fb2f8 (patch)
treea03068532e59d1c262a7d29c099d720bc5265678
parent1c431f118c95662365283e3b9fce00a7bbb59b5d (diff)
parent492b9917c684bbfd42479e049c00b1e502f8b53f (diff)
downloadu-boot-WIP/08Oct2020.tar.gz
Merge https://gitlab.denx.de/u-boot/custodians/u-boot-cfi-flashWIP/08Oct2020
- Fix devicetree address determination seen on QEMU ARM64 - Use DMA for reads is available
-rw-r--r--drivers/dma/dma-uclass.c4
-rw-r--r--drivers/mtd/cfi_flash.c24
-rw-r--r--drivers/mtd/cfi_mtd.c4
3 files changed, 11 insertions, 21 deletions
diff --git a/drivers/dma/dma-uclass.c b/drivers/dma/dma-uclass.c
index 8cbb364042..50403148d6 100644
--- a/drivers/dma/dma-uclass.c
+++ b/drivers/dma/dma-uclass.c
@@ -219,8 +219,8 @@ int dma_get_device(u32 transfer_type, struct udevice **devp)
}
if (!dev) {
- pr_err("No DMA device found that supports %x type\n",
- transfer_type);
+ pr_debug("No DMA device found that supports %x type\n",
+ transfer_type);
return -EPROTONOSUPPORT;
}
diff --git a/drivers/mtd/cfi_flash.c b/drivers/mtd/cfi_flash.c
index b7289ba539..9e3a652f44 100644
--- a/drivers/mtd/cfi_flash.c
+++ b/drivers/mtd/cfi_flash.c
@@ -2468,29 +2468,17 @@ unsigned long flash_init(void)
#ifdef CONFIG_CFI_FLASH /* for driver model */
static int cfi_flash_probe(struct udevice *dev)
{
- const fdt32_t *cell;
- int addrc, sizec;
- int len, idx;
+ fdt_addr_t addr;
+ int idx;
- addrc = dev_read_addr_cells(dev);
- sizec = dev_read_size_cells(dev);
-
- /* decode regs; there may be multiple reg tuples. */
- cell = dev_read_prop(dev, "reg", &len);
- if (!cell)
- return -ENOENT;
- idx = 0;
- len /= sizeof(fdt32_t);
- while (idx < len) {
- phys_addr_t addr;
-
- addr = dev_translate_address(dev, cell + idx);
+ for (idx = 0; idx < CFI_MAX_FLASH_BANKS; idx++) {
+ addr = dev_read_addr_index(dev, idx);
+ if (addr == FDT_ADDR_T_NONE)
+ break;
flash_info[cfi_flash_num_flash_banks].dev = dev;
flash_info[cfi_flash_num_flash_banks].base = addr;
cfi_flash_num_flash_banks++;
-
- idx += addrc + sizec;
}
gd->bd->bi_flashstart = flash_info[0].base;
diff --git a/drivers/mtd/cfi_mtd.c b/drivers/mtd/cfi_mtd.c
index a5bb0962e5..78293caa2f 100644
--- a/drivers/mtd/cfi_mtd.c
+++ b/drivers/mtd/cfi_mtd.c
@@ -6,6 +6,7 @@
*/
#include <common.h>
+#include <dma.h>
#include <flash.h>
#include <malloc.h>
@@ -70,7 +71,8 @@ static int cfi_mtd_read(struct mtd_info *mtd, loff_t from, size_t len,
flash_info_t *fi = mtd->priv;
u_char *f = (u_char*)(fi->start[0]) + from;
- memcpy(buf, f, len);
+ if (dma_memcpy(buf, f, len) < 0)
+ memcpy(buf, f, len);
*retlen = len;
return 0;