x86: Adjust mrccache_get_region() to support get_mmap()
It is now possible to obtain the memory map for a SPI controllers instead of having it hard-coded in the device tree. Update the code to support this. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
This commit is contained in:
parent
87f1084a63
commit
506f224977
@ -210,6 +210,9 @@ int mrccache_get_region(struct udevice **devp, struct mrc_region *entry)
|
|||||||
{
|
{
|
||||||
struct udevice *dev;
|
struct udevice *dev;
|
||||||
ofnode mrc_node;
|
ofnode mrc_node;
|
||||||
|
ulong map_base;
|
||||||
|
uint map_size;
|
||||||
|
uint offset;
|
||||||
u32 reg[2];
|
u32 reg[2];
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
@ -221,10 +224,15 @@ int mrccache_get_region(struct udevice **devp, struct mrc_region *entry)
|
|||||||
ret = uclass_find_first_device(UCLASS_SPI_FLASH, &dev);
|
ret = uclass_find_first_device(UCLASS_SPI_FLASH, &dev);
|
||||||
if (ret)
|
if (ret)
|
||||||
return log_msg_ret("Cannot find SPI flash\n", ret);
|
return log_msg_ret("Cannot find SPI flash\n", ret);
|
||||||
ret = dev_read_u32_array(dev, "memory-map", reg, 2);
|
ret = dm_spi_get_mmap(dev, &map_base, &map_size, &offset);
|
||||||
if (ret)
|
if (!ret) {
|
||||||
return log_msg_ret("Cannot find memory map\n", ret);
|
entry->base = map_base;
|
||||||
entry->base = reg[0];
|
} else {
|
||||||
|
ret = dev_read_u32_array(dev, "memory-map", reg, 2);
|
||||||
|
if (ret)
|
||||||
|
return log_msg_ret("Cannot find memory map\n", ret);
|
||||||
|
entry->base = reg[0];
|
||||||
|
}
|
||||||
|
|
||||||
/* Find the place where we put the MRC cache */
|
/* Find the place where we put the MRC cache */
|
||||||
mrc_node = dev_read_subnode(dev, "rw-mrc-cache");
|
mrc_node = dev_read_subnode(dev, "rw-mrc-cache");
|
||||||
@ -239,6 +247,8 @@ int mrccache_get_region(struct udevice **devp, struct mrc_region *entry)
|
|||||||
|
|
||||||
if (devp)
|
if (devp)
|
||||||
*devp = dev;
|
*devp = dev;
|
||||||
|
debug("MRC cache in '%s', offset %x, len %x, base %x\n",
|
||||||
|
dev->name, entry->offset, entry->length, entry->base);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user