| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 | /* * 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) */
 |