|
@@ -19,6 +19,7 @@
|
|
|
#include <linux/errno.h>
|
|
|
#include <asm/arch/imx-regs.h>
|
|
|
#include <asm/arch/crm_regs.h>
|
|
|
+#include <asm/arch/sys_proto.h>
|
|
|
#include <div64.h>
|
|
|
#include "ipu.h"
|
|
|
#include "ipu_regs.h"
|
|
@@ -81,6 +82,11 @@ struct ipu_ch_param {
|
|
|
|
|
|
#define IPU_SW_RST_TOUT_USEC (10000)
|
|
|
|
|
|
+#define IPUV3_CLK_MX51 133000000
|
|
|
+#define IPUV3_CLK_MX53 200000000
|
|
|
+#define IPUV3_CLK_MX6Q 264000000
|
|
|
+#define IPUV3_CLK_MX6DL 198000000
|
|
|
+
|
|
|
void clk_enable(struct clk *clk)
|
|
|
{
|
|
|
if (clk) {
|
|
@@ -196,7 +202,6 @@ static void clk_ipu_disable(struct clk *clk)
|
|
|
|
|
|
static struct clk ipu_clk = {
|
|
|
.name = "ipu_clk",
|
|
|
- .rate = CONFIG_IPUV3_CLK,
|
|
|
#if defined(CONFIG_MX51) || defined(CONFIG_MX53)
|
|
|
.enable_reg = (u32 *)(CCM_BASE_ADDR +
|
|
|
offsetof(struct mxc_ccm_reg, CCGR5)),
|
|
@@ -476,6 +481,13 @@ int ipu_probe(void)
|
|
|
g_pixel_clk[1] = &pixel_clk[1];
|
|
|
|
|
|
g_ipu_clk = &ipu_clk;
|
|
|
+#if defined(CONFIG_MX51)
|
|
|
+ g_ipu_clk->rate = IPUV3_CLK_MX51;
|
|
|
+#elif defined(CONFIG_MX53)
|
|
|
+ g_ipu_clk->rate = IPUV3_CLK_MX53;
|
|
|
+#else
|
|
|
+ g_ipu_clk->rate = is_mx6sdl() ? IPUV3_CLK_MX6DL : IPUV3_CLK_MX6Q;
|
|
|
+#endif
|
|
|
debug("ipu_clk = %u\n", clk_get_rate(g_ipu_clk));
|
|
|
g_ldb_clk = &ldb_clk;
|
|
|
debug("ldb_clk = %u\n", clk_get_rate(g_ldb_clk));
|