|
@@ -0,0 +1,72 @@
|
|
|
|
+/*
|
|
|
|
+ * OMAP2430 clock data
|
|
|
|
+ *
|
|
|
|
+ * Copyright (C) 2005-2009, 2012 Texas Instruments, Inc.
|
|
|
|
+ * Copyright (C) 2004-2011 Nokia Corporation
|
|
|
|
+ *
|
|
|
|
+ * Contacts:
|
|
|
|
+ * Richard Woodruff <r-woodruff2@ti.com>
|
|
|
|
+ * Paul Walmsley
|
|
|
|
+ *
|
|
|
|
+ * This program is free software; you can redistribute it and/or modify
|
|
|
|
+ * it under the terms of the GNU General Public License version 2 as
|
|
|
|
+ * published by the Free Software Foundation.
|
|
|
|
+ */
|
|
|
|
+
|
|
|
|
+#include <linux/kernel.h>
|
|
|
|
+#include <linux/clk.h>
|
|
|
|
+#include <linux/clk-private.h>
|
|
|
|
+#include <linux/list.h>
|
|
|
|
+
|
|
|
|
+#include "soc.h"
|
|
|
|
+#include "iomap.h"
|
|
|
|
+#include "clock.h"
|
|
|
|
+#include "clock2xxx.h"
|
|
|
|
+#include "opp2xxx.h"
|
|
|
|
+#include "cm2xxx.h"
|
|
|
|
+#include "prm2xxx.h"
|
|
|
|
+#include "prm-regbits-24xx.h"
|
|
|
|
+#include "cm-regbits-24xx.h"
|
|
|
|
+#include "sdrc.h"
|
|
|
|
+#include "control.h"
|
|
|
|
+
|
|
|
|
+#define OMAP_CM_REGADDR OMAP2430_CM_REGADDR
|
|
|
|
+
|
|
|
|
+/*
|
|
|
|
+ * 2430 clock tree.
|
|
|
|
+ *
|
|
|
|
+ * NOTE:In many cases here we are assigning a 'default' parent. In
|
|
|
|
+ * many cases the parent is selectable. The set parent calls will
|
|
|
|
+ * also switch sources.
|
|
|
|
+ *
|
|
|
|
+ * Several sources are given initial rates which may be wrong, this will
|
|
|
|
+ * be fixed up in the init func.
|
|
|
|
+ *
|
|
|
|
+ * Things are broadly separated below by clock domains. It is
|
|
|
|
+ * noteworthy that most peripherals have dependencies on multiple clock
|
|
|
|
+ * domains. Many get their interface clocks from the L4 domain, but get
|
|
|
|
+ * functional clocks from fixed sources or other core domain derived
|
|
|
|
+ * clocks.
|
|
|
|
+ */
|
|
|
|
+
|
|
|
|
+DEFINE_CLK_FIXED_RATE(alt_ck, CLK_IS_ROOT, 54000000, 0x0);
|
|
|
|
+
|
|
|
|
+DEFINE_CLK_FIXED_RATE(func_32k_ck, CLK_IS_ROOT, 32768, 0x0);
|
|
|
|
+
|
|
|
|
+DEFINE_CLK_FIXED_RATE(mcbsp_clks, CLK_IS_ROOT, 0x0, 0x0);
|
|
|
|
+
|
|
|
|
+static struct clk osc_ck;
|
|
|
|
+
|
|
|
|
+static const struct clk_ops osc_ck_ops = {
|
|
|
|
+ .enable = &omap2_enable_osc_ck,
|
|
|
|
+ .disable = omap2_disable_osc_ck,
|
|
|
|
+ .recalc_rate = &omap2_osc_clk_recalc,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct clk_hw_omap osc_ck_hw = {
|
|
|
|
+ .hw = {
|
|
|
|
+ .clk = &osc_ck,
|
|
|
|
+ },
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct clk osc_ck = {
|