summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/bootcount/bootcount_syscon.c4
-rw-r--r--drivers/dfu/dfu_mtd.c22
-rw-r--r--drivers/net/ti/am65-cpsw-nuss.c2
-rw-r--r--drivers/pci/pci-uclass.c2
4 files changed, 26 insertions, 4 deletions
diff --git a/drivers/bootcount/bootcount_syscon.c b/drivers/bootcount/bootcount_syscon.c
index 413fd5bb9df..f80d87071d9 100644
--- a/drivers/bootcount/bootcount_syscon.c
+++ b/drivers/bootcount/bootcount_syscon.c
@@ -107,8 +107,8 @@ static int bootcount_syscon_of_to_plat(struct udevice *dev)
return -EINVAL;
}
if (reg_size != 4) {
- dev_err(dev, "%s: Unsupported register size: %d\n", __func__,
- reg_size);
+ dev_err(dev, "%s: Unsupported register size: %pa\n", __func__,
+ &reg_size);
return -EINVAL;
}
diff --git a/drivers/dfu/dfu_mtd.c b/drivers/dfu/dfu_mtd.c
index 0b7f17761fd..cce9ce0845e 100644
--- a/drivers/dfu/dfu_mtd.c
+++ b/drivers/dfu/dfu_mtd.c
@@ -18,6 +18,20 @@ static bool mtd_is_aligned_with_block_size(struct mtd_info *mtd, u64 size)
return !do_div(size, mtd->erasesize);
}
+/* Logic taken from cmd/mtd.c:mtd_oob_write_is_empty() */
+static bool mtd_page_is_empty(struct mtd_oob_ops *op)
+{
+ int i;
+
+ for (i = 0; i < op->len; i++)
+ if (op->datbuf[i] != 0xff)
+ return false;
+
+ /* oob is not used, with MTD_OPS_AUTO_OOB & ooblen=0 */
+
+ return true;
+}
+
static int mtd_block_op(enum dfu_op op, struct dfu_entity *dfu,
u64 offset, void *buf, long *len)
{
@@ -129,8 +143,14 @@ static int mtd_block_op(enum dfu_op op, struct dfu_entity *dfu,
if (op == DFU_OP_READ)
ret = mtd_read_oob(mtd, off, &io_op);
- else
+ else if (has_pages && dfu->data.mtd.ubi && mtd_page_is_empty(&io_op)) {
+ /* in case of ubi partition, do not write an empty page, only skip it */
+ ret = 0;
+ io_op.retlen = mtd->writesize;
+ io_op.oobretlen = mtd->oobsize;
+ } else {
ret = mtd_write_oob(mtd, off, &io_op);
+ }
if (ret) {
printf("Failure while %s at offset 0x%llx\n",
diff --git a/drivers/net/ti/am65-cpsw-nuss.c b/drivers/net/ti/am65-cpsw-nuss.c
index 6ae69b51c79..454986ff159 100644
--- a/drivers/net/ti/am65-cpsw-nuss.c
+++ b/drivers/net/ti/am65-cpsw-nuss.c
@@ -752,7 +752,7 @@ static int am65_cpsw_probe_nuss(struct udevice *dev)
ret = device_bind_driver_to_node(dev, "am65_cpsw_nuss_port", ofnode_get_name(node), node, &port_dev);
if (ret)
- printf("SCREEEM\n");
+ dev_err(dev, "Failed to bind to %s node\n", ofnode_get_name(node));
}
for (i = 0; i < AM65_CPSW_CPSWNU_MAX_PORTS; i++) {
diff --git a/drivers/pci/pci-uclass.c b/drivers/pci/pci-uclass.c
index c66cd756d9e..33dda00002e 100644
--- a/drivers/pci/pci-uclass.c
+++ b/drivers/pci/pci-uclass.c
@@ -560,6 +560,8 @@ int pci_auto_config_devices(struct udevice *bus)
if (pplat->class == (PCI_CLASS_DISPLAY_VGA << 8))
set_vga_bridge_bits(dev);
}
+ if (hose->last_busno < sub_bus)
+ hose->last_busno = sub_bus;
debug("%s: done\n", __func__);
return log_msg_ret("sub", sub_bus);