summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/mtd/nand/raw/nand_util.c6
-rw-r--r--drivers/pci/pcie_mediatek.c19
2 files changed, 16 insertions, 9 deletions
diff --git a/drivers/mtd/nand/raw/nand_util.c b/drivers/mtd/nand/raw/nand_util.c
index 5b74ef0dfdb..00c3c6c4122 100644
--- a/drivers/mtd/nand/raw/nand_util.c
+++ b/drivers/mtd/nand/raw/nand_util.c
@@ -635,14 +635,14 @@ int nand_write_skip_bad(struct mtd_info *mtd, loff_t offset, size_t *length,
}
while (left_to_write > 0) {
+ loff_t block_start = offset & ~(loff_t)(mtd->erasesize - 1);
size_t block_offset = offset & (mtd->erasesize - 1);
size_t write_size, truncated_write_size;
WATCHDOG_RESET();
- if (nand_block_isbad(mtd, offset & ~(mtd->erasesize - 1))) {
- printf("Skip bad block 0x%08llx\n",
- offset & ~(mtd->erasesize - 1));
+ if (nand_block_isbad(mtd, block_start)) {
+ printf("Skip bad block 0x%08llx\n", block_start);
offset += mtd->erasesize - block_offset;
continue;
}
diff --git a/drivers/pci/pcie_mediatek.c b/drivers/pci/pcie_mediatek.c
index ad34f7c597e..55b6a40f254 100644
--- a/drivers/pci/pcie_mediatek.c
+++ b/drivers/pci/pcie_mediatek.c
@@ -443,29 +443,36 @@ static void mtk_pcie_enable_port(struct mtk_pcie_port *port)
err = clk_enable(&port->sys_ck);
if (err)
- goto exit;
+ goto err_sys_clk;
err = reset_assert(&port->reset);
if (err)
- goto exit;
+ goto err_reset;
err = reset_deassert(&port->reset);
if (err)
- goto exit;
+ goto err_reset;
err = generic_phy_init(&port->phy);
if (err)
- goto exit;
+ goto err_phy_init;
err = generic_phy_power_on(&port->phy);
if (err)
- goto exit;
+ goto err_phy_on;
if (!mtk_pcie_startup_port(port))
return;
pr_err("Port%d link down\n", port->slot);
-exit:
+
+ generic_phy_power_off(&port->phy);
+err_phy_on:
+ generic_phy_exit(&port->phy);
+err_phy_init:
+err_reset:
+ clk_disable(&port->sys_ck);
+err_sys_clk:
mtk_pcie_port_free(port);
}