|
@@ -0,0 +1,94 @@
|
|
|
+/*
|
|
|
+ * omap_hwmod macros, structures
|
|
|
+ *
|
|
|
+ * Copyright (C) 2009-2011 Nokia Corporation
|
|
|
+ * Copyright (C) 2011-2012 Texas Instruments, Inc.
|
|
|
+ * Paul Walmsley
|
|
|
+ *
|
|
|
+ * Created in collaboration with (alphabetical order): Benoît Cousson,
|
|
|
+ * Kevin Hilman, Tony Lindgren, Rajendra Nayak, Vikram Pandita, Sakari
|
|
|
+ * Poussa, Anand Sawant, Santosh Shilimkar, Richard Woodruff
|
|
|
+ *
|
|
|
+ * 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.
|
|
|
+ *
|
|
|
+ * These headers and macros are used to define OMAP on-chip module
|
|
|
+ * data and their integration with other OMAP modules and Linux.
|
|
|
+ * Copious documentation and references can also be found in the
|
|
|
+ * omap_hwmod code, in arch/arm/mach-omap2/omap_hwmod.c (as of this
|
|
|
+ * writing).
|
|
|
+ *
|
|
|
+ * To do:
|
|
|
+ * - add interconnect error log structures
|
|
|
+ * - add pinmuxing
|
|
|
+ * - init_conn_id_bit (CONNID_BIT_VECTOR)
|
|
|
+ * - implement default hwmod SMS/SDRC flags?
|
|
|
+ * - move Linux-specific data ("non-ROM data") out
|
|
|
+ *
|
|
|
+ */
|
|
|
+#ifndef __ARCH_ARM_PLAT_OMAP_INCLUDE_MACH_OMAP_HWMOD_H
|
|
|
+#define __ARCH_ARM_PLAT_OMAP_INCLUDE_MACH_OMAP_HWMOD_H
|
|
|
+
|
|
|
+#include <linux/kernel.h>
|
|
|
+#include <linux/init.h>
|
|
|
+#include <linux/list.h>
|
|
|
+#include <linux/ioport.h>
|
|
|
+#include <linux/spinlock.h>
|
|
|
+
|
|
|
+struct omap_device;
|
|
|
+
|
|
|
+extern struct omap_hwmod_sysc_fields omap_hwmod_sysc_type1;
|
|
|
+extern struct omap_hwmod_sysc_fields omap_hwmod_sysc_type2;
|
|
|
+extern struct omap_hwmod_sysc_fields omap_hwmod_sysc_type3;
|
|
|
+
|
|
|
+/*
|
|
|
+ * OCP SYSCONFIG bit shifts/masks TYPE1. These are for IPs compliant
|
|
|
+ * with the original PRCM protocol defined for OMAP2420
|
|
|
+ */
|
|
|
+#define SYSC_TYPE1_MIDLEMODE_SHIFT 12
|
|
|
+#define SYSC_TYPE1_MIDLEMODE_MASK (0x3 << SYSC_TYPE1_MIDLEMODE_SHIFT)
|
|
|
+#define SYSC_TYPE1_CLOCKACTIVITY_SHIFT 8
|
|
|
+#define SYSC_TYPE1_CLOCKACTIVITY_MASK (0x3 << SYSC_TYPE1_CLOCKACTIVITY_SHIFT)
|
|
|
+#define SYSC_TYPE1_SIDLEMODE_SHIFT 3
|
|
|
+#define SYSC_TYPE1_SIDLEMODE_MASK (0x3 << SYSC_TYPE1_SIDLEMODE_SHIFT)
|
|
|
+#define SYSC_TYPE1_ENAWAKEUP_SHIFT 2
|
|
|
+#define SYSC_TYPE1_ENAWAKEUP_MASK (1 << SYSC_TYPE1_ENAWAKEUP_SHIFT)
|
|
|
+#define SYSC_TYPE1_SOFTRESET_SHIFT 1
|
|
|
+#define SYSC_TYPE1_SOFTRESET_MASK (1 << SYSC_TYPE1_SOFTRESET_SHIFT)
|
|
|
+#define SYSC_TYPE1_AUTOIDLE_SHIFT 0
|
|
|
+#define SYSC_TYPE1_AUTOIDLE_MASK (1 << SYSC_TYPE1_AUTOIDLE_SHIFT)
|
|
|
+
|
|
|
+/*
|
|
|
+ * OCP SYSCONFIG bit shifts/masks TYPE2. These are for IPs compliant
|
|
|
+ * with the new PRCM protocol defined for new OMAP4 IPs.
|
|
|
+ */
|
|
|
+#define SYSC_TYPE2_SOFTRESET_SHIFT 0
|
|
|
+#define SYSC_TYPE2_SOFTRESET_MASK (1 << SYSC_TYPE2_SOFTRESET_SHIFT)
|
|
|
+#define SYSC_TYPE2_SIDLEMODE_SHIFT 2
|
|
|
+#define SYSC_TYPE2_SIDLEMODE_MASK (0x3 << SYSC_TYPE2_SIDLEMODE_SHIFT)
|
|
|
+#define SYSC_TYPE2_MIDLEMODE_SHIFT 4
|
|
|
+#define SYSC_TYPE2_MIDLEMODE_MASK (0x3 << SYSC_TYPE2_MIDLEMODE_SHIFT)
|
|
|
+#define SYSC_TYPE2_DMADISABLE_SHIFT 16
|
|
|
+#define SYSC_TYPE2_DMADISABLE_MASK (0x1 << SYSC_TYPE2_DMADISABLE_SHIFT)
|
|
|
+
|
|
|
+/*
|
|
|
+ * OCP SYSCONFIG bit shifts/masks TYPE3.
|
|
|
+ * This is applicable for some IPs present in AM33XX
|
|
|
+ */
|
|
|
+#define SYSC_TYPE3_SIDLEMODE_SHIFT 0
|
|
|
+#define SYSC_TYPE3_SIDLEMODE_MASK (0x3 << SYSC_TYPE3_SIDLEMODE_SHIFT)
|
|
|
+#define SYSC_TYPE3_MIDLEMODE_SHIFT 2
|
|
|
+#define SYSC_TYPE3_MIDLEMODE_MASK (0x3 << SYSC_TYPE3_MIDLEMODE_SHIFT)
|
|
|
+
|
|
|
+/* OCP SYSSTATUS bit shifts/masks */
|
|
|
+#define SYSS_RESETDONE_SHIFT 0
|
|
|
+#define SYSS_RESETDONE_MASK (1 << SYSS_RESETDONE_SHIFT)
|
|
|
+
|
|
|
+/* Master standby/slave idle mode flags */
|
|
|
+#define HWMOD_IDLEMODE_FORCE (1 << 0)
|
|
|
+#define HWMOD_IDLEMODE_NO (1 << 1)
|
|
|
+#define HWMOD_IDLEMODE_SMART (1 << 2)
|
|
|
+#define HWMOD_IDLEMODE_SMART_WKUP (1 << 3)
|
|
|
+
|
|
|
+/* modulemode control type (SW or HW) */
|