summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/clk/imx/clk-pll14xx.c1
-rw-r--r--drivers/cpu/imx8_cpu.c4
-rw-r--r--drivers/misc/imx8/scu_api.c3
-rw-r--r--drivers/mtd/spi/spi-nor-core.c4
-rw-r--r--drivers/net/fec_mxc.c1
-rw-r--r--drivers/scsi/scsi.c13
-rw-r--r--drivers/virtio/virtio_ring.c6
7 files changed, 20 insertions, 12 deletions
diff --git a/drivers/clk/imx/clk-pll14xx.c b/drivers/clk/imx/clk-pll14xx.c
index 7ec78dc3a80..f9fcec18f9f 100644
--- a/drivers/clk/imx/clk-pll14xx.c
+++ b/drivers/clk/imx/clk-pll14xx.c
@@ -409,6 +409,7 @@ struct clk *imx_clk_pll14xx(const char *name, const char *parent_name,
default:
pr_err("%s: Unknown pll type for pll clk %s\n",
__func__, name);
+ kfree(pll);
return ERR_PTR(-EINVAL);
};
diff --git a/drivers/cpu/imx8_cpu.c b/drivers/cpu/imx8_cpu.c
index 4836bddd93b..950630453f9 100644
--- a/drivers/cpu/imx8_cpu.c
+++ b/drivers/cpu/imx8_cpu.c
@@ -201,6 +201,10 @@ static int cpu_imx_get_temp(struct cpu_imx_plat *plat)
__weak u32 get_cpu_temp_grade(int *minc, int *maxc)
{
+ if (minc && maxc) {
+ *minc = 0;
+ *maxc = 95;
+ }
return 0;
}
diff --git a/drivers/misc/imx8/scu_api.c b/drivers/misc/imx8/scu_api.c
index a40c8badf9a..8985ab6584d 100644
--- a/drivers/misc/imx8/scu_api.c
+++ b/drivers/misc/imx8/scu_api.c
@@ -1282,8 +1282,7 @@ int sc_seco_secvio_dgo_config(sc_ipc_t ipc, u8 id, u8 access, u32 *data)
printf("%s, id:0x%x, access:%x, res:%d\n",
__func__, id, access, RPC_R8(&msg));
- if (data)
- *data = RPC_U32(&msg, 0U);
+ *data = RPC_U32(&msg, 0U);
return ret;
}
diff --git a/drivers/mtd/spi/spi-nor-core.c b/drivers/mtd/spi/spi-nor-core.c
index 655bf3aaf81..76c33b24368 100644
--- a/drivers/mtd/spi/spi-nor-core.c
+++ b/drivers/mtd/spi/spi-nor-core.c
@@ -3784,8 +3784,10 @@ static int s25_s28_mdp_ready(struct spi_nor *nor)
for (addr = 0; addr < nor->mtd.size; addr += SZ_128M) {
ret = spansion_sr_ready(nor, addr, nor->rdsr_dummy);
- if (!ret)
+ if (ret < 0)
return ret;
+ else if (ret == 0)
+ return 0;
}
return 1;
diff --git a/drivers/net/fec_mxc.c b/drivers/net/fec_mxc.c
index 54b08482b91..9ac72d25ef6 100644
--- a/drivers/net/fec_mxc.c
+++ b/drivers/net/fec_mxc.c
@@ -1344,6 +1344,7 @@ static int fecmxc_probe(struct udevice *dev)
while (readl(&priv->eth->ecntrl) & FEC_ECNTRL_RESET) {
if (get_timer(start) > (CONFIG_SYS_HZ * 5)) {
printf("FEC MXC: Timeout resetting chip\n");
+ ret = -ETIMEDOUT;
goto err_timeout;
}
udelay(10);
diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c
index 78efed6b66a..05608399be1 100644
--- a/drivers/scsi/scsi.c
+++ b/drivers/scsi/scsi.c
@@ -228,13 +228,11 @@ static ulong scsi_read(struct udevice *dev, lbaint_t blknr, lbaint_t blkcnt,
blocks = max_blks;
scsi_setup_read_ext(pccb, start, blocks);
start += max_blks;
- blks -= max_blks;
} else {
pccb->datalen = block_dev->blksz * blks;
blocks = blks;
scsi_setup_read_ext(pccb, start, blocks);
start += blks;
- blks = 0;
}
debug("scsi_read_ext: startblk " LBAF
", blccnt " LBAF " buffer %lX\n",
@@ -244,6 +242,7 @@ static ulong scsi_read(struct udevice *dev, lbaint_t blknr, lbaint_t blkcnt,
blkcnt -= blks;
break;
}
+ blks -= blocks;
buf_addr += pccb->datalen;
} while (blks != 0);
debug("scsi_read_ext: end startblk " LBAF
@@ -286,13 +285,11 @@ static ulong scsi_write(struct udevice *dev, lbaint_t blknr, lbaint_t blkcnt,
blocks = max_blks;
scsi_setup_write_ext(pccb, start, blocks);
start += max_blks;
- blks -= max_blks;
} else {
pccb->datalen = block_dev->blksz * blks;
blocks = blks;
scsi_setup_write_ext(pccb, start, blocks);
start += blks;
- blks = 0;
}
debug("%s: startblk " LBAF ", blccnt " LBAF " buffer %lx\n",
__func__, start, blocks, buf_addr);
@@ -301,6 +298,7 @@ static ulong scsi_write(struct udevice *dev, lbaint_t blknr, lbaint_t blkcnt,
blkcnt -= blks;
break;
}
+ blks -= blocks;
buf_addr += pccb->datalen;
} while (blks != 0);
@@ -322,7 +320,7 @@ static ulong scsi_erase(struct udevice *dev, lbaint_t blknr, lbaint_t blkcnt)
struct blk_desc *block_dev = dev_get_uclass_plat(dev);
struct udevice *bdev = dev->parent;
struct scsi_plat *uc_plat = dev_get_uclass_plat(bdev);
- lbaint_t start, blks, max_blks;
+ lbaint_t start, blks, max_blks, blocks;
struct scsi_cmd *pccb = (struct scsi_cmd *)&tempccb;
/* Setup device */
@@ -339,19 +337,20 @@ static ulong scsi_erase(struct udevice *dev, lbaint_t blknr, lbaint_t blkcnt)
__func__, block_dev->devnum, start, blks);
do {
if (blks > max_blks) {
+ blocks = max_blks;
scsi_setup_erase_ext(pccb, start, max_blks);
start += max_blks;
- blks -= max_blks;
} else {
+ blocks = blks;
scsi_setup_erase_ext(pccb, start, blks);
start += blks;
- blks = 0;
}
if (scsi_exec(bdev, pccb)) {
scsi_print_error(pccb);
blkcnt -= blks;
break;
}
+ blks -= blocks;
} while (blks != 0);
return blkcnt;
}
diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
index 306fa5b3f68..3a40b12f6e5 100644
--- a/drivers/virtio/virtio_ring.c
+++ b/drivers/virtio/virtio_ring.c
@@ -349,9 +349,10 @@ struct virtqueue *vring_create_virtqueue(unsigned int index, unsigned int num,
/* TODO: allocate each queue chunk individually */
for (; num && vring_size(num, vring_align) > PAGE_SIZE; num /= 2) {
- size_t sz = vring_size(num, vring_align);
+ vring.size = vring_size(num, vring_align);
- queue = virtio_alloc_pages(vdev, DIV_ROUND_UP(sz, PAGE_SIZE));
+ queue = virtio_alloc_pages(vdev,
+ DIV_ROUND_UP(vring.size, PAGE_SIZE));
if (queue)
break;
}
@@ -362,6 +363,7 @@ struct virtqueue *vring_create_virtqueue(unsigned int index, unsigned int num,
if (!queue) {
/* Try to get a single page. You are my only hope! */
queue = virtio_alloc_pages(vdev, 1);
+ vring.size = PAGE_SIZE;
}
if (!queue)
return NULL;