|
@@ -0,0 +1,55 @@
|
|
|
+/*
|
|
|
+ * Code commons to all DaVinci SoCs.
|
|
|
+ *
|
|
|
+ * Author: Mark A. Greer <mgreer@mvista.com>
|
|
|
+ *
|
|
|
+ * 2009 (c) MontaVista Software, Inc. This file is licensed under
|
|
|
+ * the terms of the GNU General Public License version 2. This program
|
|
|
+ * is licensed "as is" without any warranty of any kind, whether express
|
|
|
+ * or implied.
|
|
|
+ */
|
|
|
+#include <linux/module.h>
|
|
|
+#include <linux/io.h>
|
|
|
+
|
|
|
+#include <asm/tlb.h>
|
|
|
+#include <asm/mach/map.h>
|
|
|
+
|
|
|
+#include <mach/common.h>
|
|
|
+
|
|
|
+struct davinci_soc_info davinci_soc_info;
|
|
|
+EXPORT_SYMBOL(davinci_soc_info);
|
|
|
+
|
|
|
+void __init davinci_common_init(struct davinci_soc_info *soc_info)
|
|
|
+{
|
|
|
+ int ret;
|
|
|
+
|
|
|
+ if (!soc_info) {
|
|
|
+ ret = -EINVAL;
|
|
|
+ goto err;
|
|
|
+ }
|
|
|
+
|
|
|
+ memcpy(&davinci_soc_info, soc_info, sizeof(struct davinci_soc_info));
|
|
|
+
|
|
|
+ if (davinci_soc_info.io_desc && (davinci_soc_info.io_desc_num > 0))
|
|
|
+ iotable_init(davinci_soc_info.io_desc,
|
|
|
+ davinci_soc_info.io_desc_num);
|
|
|
+
|
|
|
+ /*
|
|
|
+ * Normally devicemaps_init() would flush caches and tlb after
|
|
|
+ * mdesc->map_io(), but we must also do it here because of the CPU
|
|
|
+ * revision check below.
|
|
|
+ */
|
|
|
+ local_flush_tlb_all();
|
|
|
+ flush_cache_all();
|
|
|
+
|
|
|
+ /*
|
|
|
+ * We want to check CPU revision early for cpu_is_xxxx() macros.
|
|
|
+ * IO space mapping must be initialized before we can do that.
|
|
|
+ */
|
|
|
+ davinci_check_revision();
|
|
|
+
|
|
|
+ return;
|
|
|
+
|
|
|
+err:
|
|
|
+ pr_err("davinci_common_init: SoC Initialization failed\n");
|
|
|
+}
|