summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2021-05-17 16:23:50 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2021-05-17 16:23:50 +0200
commitca7163dc46ad767f6f33832bc416943f4deba416 (patch)
treeec36c89a7eed66d9c9ad321bad02e92666bf5d39 /drivers
parent0352849942a048b18f01405fc742005e428c043d (diff)
parent24ee98513ff80acea199990ebf0b765869234945 (diff)
downloadbarebox-ca7163dc46ad767f6f33832bc416943f4deba416.tar.gz
barebox-ca7163dc46ad767f6f33832bc416943f4deba416.tar.xz
Merge branch 'for-next/imx'
Diffstat (limited to 'drivers')
-rw-r--r--drivers/clk/mxs/clk-imx28.c1
-rw-r--r--drivers/clk/mxs/clk.h2
-rw-r--r--drivers/mtd/nand/nand_mxs.c4
-rw-r--r--drivers/watchdog/imxwd.c11
4 files changed, 14 insertions, 4 deletions
diff --git a/drivers/clk/mxs/clk-imx28.c b/drivers/clk/mxs/clk-imx28.c
index aa4ba99cd7..382021e49c 100644
--- a/drivers/clk/mxs/clk-imx28.c
+++ b/drivers/clk/mxs/clk-imx28.c
@@ -145,6 +145,7 @@ static int __init mx28_clocks_init(struct device_d *dev, void __iomem *regs)
clk_set_rate(clks[ssp2], 96000000);
clk_set_rate(clks[ssp3], 96000000);
clk_set_parent(clks[lcdif_sel], clks[ref_pix]);
+ clk_set_parent(clks[gpmi_sel], clks[ref_gpmi]);
if (dev->device_node) {
clk_data.clks = clks;
diff --git a/drivers/clk/mxs/clk.h b/drivers/clk/mxs/clk.h
index 60f2408cba..a93361a9ea 100644
--- a/drivers/clk/mxs/clk.h
+++ b/drivers/clk/mxs/clk.h
@@ -35,7 +35,7 @@ static inline struct clk *mxs_clk_fixed(const char *name, int rate)
static inline struct clk *mxs_clk_gate(const char *name,
const char *parent_name, void __iomem *reg, u8 shift)
{
- return clk_gate_inverted(name, parent_name, reg, shift, 0);
+ return clk_gate_inverted(name, parent_name, reg, shift, CLK_SET_RATE_PARENT);
}
static inline struct clk *mxs_clk_mux(const char *name, void __iomem *reg,
diff --git a/drivers/mtd/nand/nand_mxs.c b/drivers/mtd/nand/nand_mxs.c
index e4bad45a18..0540ba0216 100644
--- a/drivers/mtd/nand/nand_mxs.c
+++ b/drivers/mtd/nand/nand_mxs.c
@@ -2041,9 +2041,6 @@ static int mxs_nand_enable_edo_mode(struct mxs_nand_info *info)
uint8_t feature[ONFI_SUBFEATURE_PARAM_LEN] = {};
int ret, mode;
- if (!mxs_nand_is_imx6(info))
- return -ENODEV;
-
if (!chip->parameters.onfi)
return -ENOENT;
@@ -2186,6 +2183,7 @@ static int mxs_nand_probe(struct device_d *dev)
nand_info->dma_channel_base = 0;
} else {
nand_info->dma_channel_base = MXS_DMA_CHANNEL_AHB_APBH_GPMI0;
+ clk_set_rate(nand_info->clk, 22000000);
}
err = mxs_nand_alloc_buffers(nand_info);
diff --git a/drivers/watchdog/imxwd.c b/drivers/watchdog/imxwd.c
index b2cfd1cd3a..26c62b7bcb 100644
--- a/drivers/watchdog/imxwd.c
+++ b/drivers/watchdog/imxwd.c
@@ -21,6 +21,7 @@
#include <restart.h>
#include <watchdog.h>
#include <reset_source.h>
+#include <linux/clk.h>
struct imx_wd;
@@ -224,6 +225,7 @@ static int imx_wd_probe(struct device_d *dev)
{
struct resource *iores;
struct imx_wd *priv;
+ struct clk *clk;
void *ops;
int ret;
@@ -237,6 +239,15 @@ static int imx_wd_probe(struct device_d *dev)
dev_err(dev, "could not get memory region\n");
return PTR_ERR(iores);
}
+
+ clk = clk_get(dev, NULL);
+ if (IS_ERR(clk))
+ return PTR_ERR(clk);
+
+ ret = clk_enable(clk);
+ if (ret)
+ return ret;
+
priv->base = IOMEM(iores->start);
priv->ops = ops;
priv->wd.set_timeout = imx_watchdog_set_timeout;