Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ARM: OMAP: Split plat/cpu.h into local soc.h for mach-omap1 and mach-omap2

We want to remove plat/cpu.h. To do this, let's first split
it to private soc.h to mach-omap1 and mach-omap2. We have to
keep plat/cpu.h around until the remaining drivers are fixed,
so let's include the local soc.h in plat/cpu.h and for drivers
still including plat/cpu.h.

Once the drivers are fixed not to include plat/cpu.h, we
can remove the file.

This is needed for the ARM common zImage support.

[tony@atomide.com: updated to not print a warning]
Signed-off-by: Tony Lindgren <tony@atomide.com>

+748 -584
+1 -1
arch/arm/mach-omap1/clock.c
··· 22 22 23 23 #include <asm/mach-types.h> 24 24 25 - #include <plat/cpu.h> 25 + #include "soc.h" 26 26 #include <plat/usb.h> 27 27 28 28 #include <mach/hardware.h>
+1 -1
arch/arm/mach-omap1/clock_data.c
··· 22 22 23 23 #include <asm/mach-types.h> /* for machine_is_* */ 24 24 25 - #include <plat/cpu.h> 25 + #include "soc.h" 26 26 27 27 #include <mach/hardware.h> 28 28 #include <mach/usb.h> /* for OTG_BASE */
+1 -1
arch/arm/mach-omap1/i2c.c
··· 21 21 22 22 #include <linux/i2c-omap.h> 23 23 #include <mach/mux.h> 24 - #include <plat/cpu.h> 24 + #include "soc.h" 25 25 26 26 #include "../plat-omap/i2c.h" 27 27
+1 -1
arch/arm/mach-omap1/id.c
··· 17 17 #include <linux/io.h> 18 18 #include <asm/system_info.h> 19 19 20 - #include <plat/cpu.h> 20 + #include "soc.h" 21 21 22 22 #include <mach/hardware.h> 23 23
+1 -1
arch/arm/mach-omap1/include/mach/hardware.h
··· 39 39 #include <asm/sizes.h> 40 40 #ifndef __ASSEMBLER__ 41 41 #include <asm/types.h> 42 - #include <plat/cpu.h> 42 + #include "../../mach-omap1/soc.h" 43 43 44 44 /* 45 45 * NOTE: Please use ioremap + __raw_read/write where possible instead of these
+1 -1
arch/arm/mach-omap1/include/mach/memory.h
··· 19 19 * because of the strncmp(). 20 20 */ 21 21 #if defined(CONFIG_ARCH_OMAP15XX) && !defined(__ASSEMBLER__) 22 - #include <plat/cpu.h> 22 + #include "../../mach-omap1/soc.h" 23 23 24 24 /* 25 25 * OMAP-1510 Local Bus address offset
+1 -1
arch/arm/mach-omap1/irq.c
··· 45 45 #include <asm/irq.h> 46 46 #include <asm/mach/irq.h> 47 47 48 - #include <plat/cpu.h> 48 + #include "soc.h" 49 49 50 50 #include <mach/hardware.h> 51 51
+1 -1
arch/arm/mach-omap1/mcbsp.c
··· 21 21 22 22 #include <plat-omap/dma-omap.h> 23 23 #include <mach/mux.h> 24 - #include <plat/cpu.h> 24 + #include "soc.h" 25 25 #include <linux/platform_data/asoc-ti-mcbsp.h> 26 26 27 27 #include <mach/irqs.h>
+229
arch/arm/mach-omap1/soc.h
··· 1 + /* 2 + * OMAP cpu type detection 3 + * 4 + * Copyright (C) 2004, 2008 Nokia Corporation 5 + * 6 + * Copyright (C) 2009-11 Texas Instruments. 7 + * 8 + * Written by Tony Lindgren <tony.lindgren@nokia.com> 9 + * 10 + * Added OMAP4/5 specific defines - Santosh Shilimkar<santosh.shilimkar@ti.com> 11 + * 12 + * This program is free software; you can redistribute it and/or modify 13 + * it under the terms of the GNU General Public License as published by 14 + * the Free Software Foundation; either version 2 of the License, or 15 + * (at your option) any later version. 16 + * 17 + * This program is distributed in the hope that it will be useful, 18 + * but WITHOUT ANY WARRANTY; without even the implied warranty of 19 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 20 + * GNU General Public License for more details. 21 + * 22 + * You should have received a copy of the GNU General Public License 23 + * along with this program; if not, write to the Free Software 24 + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 25 + * 26 + */ 27 + 28 + #ifndef __ASM_ARCH_OMAP_CPU_H 29 + #define __ASM_ARCH_OMAP_CPU_H 30 + 31 + #ifndef __ASSEMBLY__ 32 + 33 + #include <linux/bitops.h> 34 + 35 + /* 36 + * Test if multicore OMAP support is needed 37 + */ 38 + #undef MULTI_OMAP1 39 + #undef OMAP_NAME 40 + 41 + #ifdef CONFIG_ARCH_OMAP730 42 + # ifdef OMAP_NAME 43 + # undef MULTI_OMAP1 44 + # define MULTI_OMAP1 45 + # else 46 + # define OMAP_NAME omap730 47 + # endif 48 + #endif 49 + #ifdef CONFIG_ARCH_OMAP850 50 + # ifdef OMAP_NAME 51 + # undef MULTI_OMAP1 52 + # define MULTI_OMAP1 53 + # else 54 + # define OMAP_NAME omap850 55 + # endif 56 + #endif 57 + #ifdef CONFIG_ARCH_OMAP15XX 58 + # ifdef OMAP_NAME 59 + # undef MULTI_OMAP1 60 + # define MULTI_OMAP1 61 + # else 62 + # define OMAP_NAME omap1510 63 + # endif 64 + #endif 65 + #ifdef CONFIG_ARCH_OMAP16XX 66 + # ifdef OMAP_NAME 67 + # undef MULTI_OMAP1 68 + # define MULTI_OMAP1 69 + # else 70 + # define OMAP_NAME omap16xx 71 + # endif 72 + #endif 73 + 74 + /* 75 + * omap_rev bits: 76 + * CPU id bits (0730, 1510, 1710, 2422...) [31:16] 77 + * CPU revision (See _REV_ defined in cpu.h) [15:08] 78 + * CPU class bits (15xx, 16xx, 24xx, 34xx...) [07:00] 79 + */ 80 + unsigned int omap_rev(void); 81 + 82 + /* 83 + * Get the CPU revision for OMAP devices 84 + */ 85 + #define GET_OMAP_REVISION() ((omap_rev() >> 8) & 0xff) 86 + 87 + /* 88 + * Macros to group OMAP into cpu classes. 89 + * These can be used in most places. 90 + * cpu_is_omap7xx(): True for OMAP730, OMAP850 91 + * cpu_is_omap15xx(): True for OMAP1510, OMAP5910 and OMAP310 92 + * cpu_is_omap16xx(): True for OMAP1610, OMAP5912 and OMAP1710 93 + */ 94 + #define GET_OMAP_CLASS (omap_rev() & 0xff) 95 + 96 + #define IS_OMAP_CLASS(class, id) \ 97 + static inline int is_omap ##class (void) \ 98 + { \ 99 + return (GET_OMAP_CLASS == (id)) ? 1 : 0; \ 100 + } 101 + 102 + #define GET_OMAP_SUBCLASS ((omap_rev() >> 20) & 0x0fff) 103 + 104 + #define IS_OMAP_SUBCLASS(subclass, id) \ 105 + static inline int is_omap ##subclass (void) \ 106 + { \ 107 + return (GET_OMAP_SUBCLASS == (id)) ? 1 : 0; \ 108 + } 109 + 110 + IS_OMAP_CLASS(7xx, 0x07) 111 + IS_OMAP_CLASS(15xx, 0x15) 112 + IS_OMAP_CLASS(16xx, 0x16) 113 + 114 + #define cpu_is_omap7xx() 0 115 + #define cpu_is_omap15xx() 0 116 + #define cpu_is_omap16xx() 0 117 + 118 + #if defined(MULTI_OMAP1) 119 + # if defined(CONFIG_ARCH_OMAP730) 120 + # undef cpu_is_omap7xx 121 + # define cpu_is_omap7xx() is_omap7xx() 122 + # endif 123 + # if defined(CONFIG_ARCH_OMAP850) 124 + # undef cpu_is_omap7xx 125 + # define cpu_is_omap7xx() is_omap7xx() 126 + # endif 127 + # if defined(CONFIG_ARCH_OMAP15XX) 128 + # undef cpu_is_omap15xx 129 + # define cpu_is_omap15xx() is_omap15xx() 130 + # endif 131 + # if defined(CONFIG_ARCH_OMAP16XX) 132 + # undef cpu_is_omap16xx 133 + # define cpu_is_omap16xx() is_omap16xx() 134 + # endif 135 + #else 136 + # if defined(CONFIG_ARCH_OMAP730) 137 + # undef cpu_is_omap7xx 138 + # define cpu_is_omap7xx() 1 139 + # endif 140 + # if defined(CONFIG_ARCH_OMAP850) 141 + # undef cpu_is_omap7xx 142 + # define cpu_is_omap7xx() 1 143 + # endif 144 + # if defined(CONFIG_ARCH_OMAP15XX) 145 + # undef cpu_is_omap15xx 146 + # define cpu_is_omap15xx() 1 147 + # endif 148 + # if defined(CONFIG_ARCH_OMAP16XX) 149 + # undef cpu_is_omap16xx 150 + # define cpu_is_omap16xx() 1 151 + # endif 152 + #endif 153 + 154 + /* 155 + * Macros to detect individual cpu types. 156 + * These are only rarely needed. 157 + * cpu_is_omap310(): True for OMAP310 158 + * cpu_is_omap1510(): True for OMAP1510 159 + * cpu_is_omap1610(): True for OMAP1610 160 + * cpu_is_omap1611(): True for OMAP1611 161 + * cpu_is_omap5912(): True for OMAP5912 162 + * cpu_is_omap1621(): True for OMAP1621 163 + * cpu_is_omap1710(): True for OMAP1710 164 + */ 165 + #define GET_OMAP_TYPE ((omap_rev() >> 16) & 0xffff) 166 + 167 + #define IS_OMAP_TYPE(type, id) \ 168 + static inline int is_omap ##type (void) \ 169 + { \ 170 + return (GET_OMAP_TYPE == (id)) ? 1 : 0; \ 171 + } 172 + 173 + IS_OMAP_TYPE(310, 0x0310) 174 + IS_OMAP_TYPE(1510, 0x1510) 175 + IS_OMAP_TYPE(1610, 0x1610) 176 + IS_OMAP_TYPE(1611, 0x1611) 177 + IS_OMAP_TYPE(5912, 0x1611) 178 + IS_OMAP_TYPE(1621, 0x1621) 179 + IS_OMAP_TYPE(1710, 0x1710) 180 + 181 + #define cpu_is_omap310() 0 182 + #define cpu_is_omap1510() 0 183 + #define cpu_is_omap1610() 0 184 + #define cpu_is_omap5912() 0 185 + #define cpu_is_omap1611() 0 186 + #define cpu_is_omap1621() 0 187 + #define cpu_is_omap1710() 0 188 + 189 + /* These are needed to compile common code */ 190 + #ifdef CONFIG_ARCH_OMAP1 191 + #define cpu_is_omap242x() 0 192 + #define cpu_is_omap2430() 0 193 + #define cpu_is_omap243x() 0 194 + #define cpu_is_omap24xx() 0 195 + #define cpu_is_omap34xx() 0 196 + #define cpu_is_omap44xx() 0 197 + #define soc_is_omap54xx() 0 198 + #define soc_is_am33xx() 0 199 + #define cpu_class_is_omap1() 1 200 + #define cpu_class_is_omap2() 0 201 + #endif 202 + 203 + /* 204 + * Whether we have MULTI_OMAP1 or not, we still need to distinguish 205 + * between 310 vs. 1510 and 1611B/5912 vs. 1710. 206 + */ 207 + 208 + #if defined(CONFIG_ARCH_OMAP15XX) 209 + # undef cpu_is_omap310 210 + # undef cpu_is_omap1510 211 + # define cpu_is_omap310() is_omap310() 212 + # define cpu_is_omap1510() is_omap1510() 213 + #endif 214 + 215 + #if defined(CONFIG_ARCH_OMAP16XX) 216 + # undef cpu_is_omap1610 217 + # undef cpu_is_omap1611 218 + # undef cpu_is_omap5912 219 + # undef cpu_is_omap1621 220 + # undef cpu_is_omap1710 221 + # define cpu_is_omap1610() is_omap1610() 222 + # define cpu_is_omap1611() is_omap1611() 223 + # define cpu_is_omap5912() is_omap5912() 224 + # define cpu_is_omap1621() is_omap1621() 225 + # define cpu_is_omap1710() is_omap1710() 226 + #endif 227 + 228 + #endif /* __ASSEMBLY__ */ 229 + #endif
+1
arch/arm/mach-omap2/board-3430sdp.c
··· 39 39 #include "gpmc.h" 40 40 #include "gpmc-smc91x.h" 41 41 42 + #include "soc.h" 42 43 #include "board-flash.h" 43 44 #include "mux.h" 44 45 #include "sdram-qimonda-hyb18m512160af-6.h"
+1 -2
arch/arm/mach-omap2/board-flash.c
··· 17 17 #include <linux/mtd/physmap.h> 18 18 #include <linux/io.h> 19 19 20 - #include <plat/cpu.h> 21 - #include "gpmc.h" 22 20 #include <linux/platform_data/mtd-nand-omap2.h> 23 21 #include <linux/platform_data/mtd-onenand-omap2.h> 24 22 23 + #include "soc.h" 25 24 #include "common.h" 26 25 #include "board-flash.h" 27 26 #include "gpmc-onenand.h"
+1
arch/arm/mach-omap2/board-omap3beagle.c
··· 46 46 #include <plat/usb.h> 47 47 #include "omap_device.h" 48 48 49 + #include "soc.h" 49 50 #include "mux.h" 50 51 #include "hsmmc.h" 51 52 #include "pm.h"
+1
arch/arm/mach-omap2/board-omap3evm.c
··· 52 52 #include <video/omapdss.h> 53 53 #include <video/omap-panel-tfp410.h> 54 54 55 + #include "soc.h" 55 56 #include "mux.h" 56 57 #include "sdram-micron-mt46h32m32lf-6.h" 57 58 #include "hsmmc.h"
+1
arch/arm/mach-omap2/board-zoom-display.c
··· 18 18 #include <video/omapdss.h> 19 19 #include "board-zoom.h" 20 20 21 + #include "soc.h" 21 22 #include "common.h" 22 23 23 24 #define LCD_PANEL_RESET_GPIO_PROD 96
+1 -1
arch/arm/mach-omap2/clock33xx_data.c
··· 18 18 #include <linux/list.h> 19 19 #include <linux/clk.h> 20 20 21 - #include "am33xx.h" 21 + #include "soc.h" 22 22 #include "iomap.h" 23 23 #include "control.h" 24 24 #include "clock.h"
+1
arch/arm/mach-omap2/clockdomain.c
··· 27 27 28 28 #include <linux/bitops.h> 29 29 30 + #include "soc.h" 30 31 #include "clock.h" 31 32 #include "clockdomain.h" 32 33
-1
arch/arm/mach-omap2/clockdomain.h
··· 20 20 #include "powerdomain.h" 21 21 #include "clock.h" 22 22 #include "omap_hwmod.h" 23 - #include <plat/cpu.h> 24 23 25 24 /* 26 25 * Clockdomain flags
+2
arch/arm/mach-omap2/clockdomain2xxx_3xxx.c
··· 14 14 15 15 #include <linux/types.h> 16 16 #include <plat/prcm.h> 17 + 18 + #include "soc.h" 17 19 #include "prm.h" 18 20 #include "prm2xxx_3xxx.h" 19 21 #include "cm.h"
+1
arch/arm/mach-omap2/clockdomains2420_data.c
··· 35 35 #include <linux/kernel.h> 36 36 #include <linux/io.h> 37 37 38 + #include "soc.h" 38 39 #include "clockdomain.h" 39 40 #include "prm2xxx_3xxx.h" 40 41 #include "cm2xxx_3xxx.h"
+1
arch/arm/mach-omap2/clockdomains2430_data.c
··· 35 35 #include <linux/kernel.h> 36 36 #include <linux/io.h> 37 37 38 + #include "soc.h" 38 39 #include "clockdomain.h" 39 40 #include "prm2xxx_3xxx.h" 40 41 #include "cm2xxx_3xxx.h"
+1
arch/arm/mach-omap2/clockdomains3xxx_data.c
··· 33 33 #include <linux/kernel.h> 34 34 #include <linux/io.h> 35 35 36 + #include "soc.h" 36 37 #include "clockdomain.h" 37 38 #include "prm2xxx_3xxx.h" 38 39 #include "cm2xxx_3xxx.h"
-1
arch/arm/mach-omap2/common.h
··· 34 34 35 35 #include <asm/proc-fns.h> 36 36 37 - #include <plat/cpu.h> 38 37 #include <plat/serial.h> 39 38 40 39 #include "../plat-omap/common.h"
+1
arch/arm/mach-omap2/display.c
··· 30 30 #include "omap-pm.h" 31 31 #include "common.h" 32 32 33 + #include "soc.h" 33 34 #include "iomap.h" 34 35 #include "mux.h" 35 36 #include "control.h"
+1
arch/arm/mach-omap2/dma.c
··· 30 30 31 31 #include <plat-omap/dma-omap.h> 32 32 33 + #include "soc.h" 33 34 #include "omap_hwmod.h" 34 35 #include "omap_device.h" 35 36
-2
arch/arm/mach-omap2/gpmc.c
··· 30 30 31 31 #include <asm/mach-types.h> 32 32 33 - #include <plat/cpu.h> 34 - 35 33 #include "soc.h" 36 34 #include "common.h" 37 35 #include "omap_device.h"
+1
arch/arm/mach-omap2/hsmmc.c
··· 17 17 #include <mach/hardware.h> 18 18 #include <linux/platform_data/gpio-omap.h> 19 19 20 + #include "soc.h" 20 21 #include "omap_device.h" 21 22 #include "omap-pm.h" 22 23
+1
arch/arm/mach-omap2/i2c.c
··· 19 19 * 20 20 */ 21 21 22 + #include "soc.h" 22 23 #include "common.h" 23 24 #include "omap_hwmod.h" 24 25 #include "omap_device.h"
+1
arch/arm/mach-omap2/mux.c
··· 38 38 39 39 #include "omap_hwmod.h" 40 40 41 + #include "soc.h" 41 42 #include "control.h" 42 43 #include "mux.h" 43 44 #include "prm.h"
+1
arch/arm/mach-omap2/omap-mpuss-lowpower.c
··· 50 50 #include <asm/suspend.h> 51 51 #include <asm/hardware/cache-l2x0.h> 52 52 53 + #include "soc.h" 53 54 #include "common.h" 54 55 #include "omap44xx.h" 55 56 #include "omap4-sar-layout.h"
-1
arch/arm/mach-omap2/omap_hwmod.h
··· 35 35 #include <linux/list.h> 36 36 #include <linux/ioport.h> 37 37 #include <linux/spinlock.h> 38 - #include <plat/cpu.h> 39 38 40 39 struct omap_device; 41 40
-1
arch/arm/mach-omap2/omap_hwmod_33xx_data.c
··· 17 17 #include <linux/i2c-omap.h> 18 18 19 19 #include "omap_hwmod.h" 20 - #include <plat/cpu.h> 21 20 #include <linux/platform_data/gpio-omap.h> 22 21 #include <linux/platform_data/spi-omap2-mcspi.h> 23 22
+1
arch/arm/mach-omap2/omap_twl.c
··· 18 18 #include <linux/kernel.h> 19 19 #include <linux/i2c/twl.h> 20 20 21 + #include "soc.h" 21 22 #include "voltage.h" 22 23 23 24 #include "pm.h"
+1
arch/arm/mach-omap2/opp3xxx_data.c
··· 19 19 */ 20 20 #include <linux/module.h> 21 21 22 + #include "soc.h" 22 23 #include "control.h" 23 24 #include "omap_opp_data.h" 24 25 #include "pm.h"
+1
arch/arm/mach-omap2/pm-debug.c
··· 33 33 #include <plat/dmtimer.h> 34 34 #include "omap-pm.h" 35 35 36 + #include "soc.h" 36 37 #include "cm2xxx_3xxx.h" 37 38 #include "prm2xxx_3xxx.h" 38 39 #include "pm.h"
+1
arch/arm/mach-omap2/pm.c
··· 24 24 #include "omap_device.h" 25 25 #include "common.h" 26 26 27 + #include "soc.h" 27 28 #include "prcm-common.h" 28 29 #include "voltage.h" 29 30 #include "powerdomain.h"
+1
arch/arm/mach-omap2/pm24xx.c
··· 40 40 41 41 #include "../plat-omap/sram.h" 42 42 43 + #include "soc.h" 43 44 #include "common.h" 44 45 #include "clock.h" 45 46 #include "prm2xxx_3xxx.h"
+1
arch/arm/mach-omap2/pm34xx.c
··· 42 42 43 43 #include "../plat-omap/sram.h" 44 44 45 + #include "soc.h" 45 46 #include "common.h" 46 47 #include "cm2xxx_3xxx.h" 47 48 #include "cm-regbits-34xx.h"
+1
arch/arm/mach-omap2/pm44xx.c
··· 18 18 #include <linux/slab.h> 19 19 #include <asm/system_misc.h> 20 20 21 + #include "soc.h" 21 22 #include "common.h" 22 23 #include "clockdomain.h" 23 24 #include "powerdomain.h"
+1
arch/arm/mach-omap2/pmu.c
··· 15 15 16 16 #include <asm/pmu.h> 17 17 18 + #include "soc.h" 18 19 #include "omap_hwmod.h" 19 20 #include "omap_device.h" 20 21
-2
arch/arm/mach-omap2/powerdomain.h
··· 22 22 23 23 #include <linux/atomic.h> 24 24 25 - #include <plat/cpu.h> 26 - 27 25 #include "voltage.h" 28 26 29 27 /* Powerdomain basic power states */
+1
arch/arm/mach-omap2/powerdomains2xxx_data.c
··· 14 14 #include <linux/kernel.h> 15 15 #include <linux/init.h> 16 16 17 + #include "soc.h" 17 18 #include "powerdomain.h" 18 19 #include "powerdomains2xxx_3xxx_data.h" 19 20
+1
arch/arm/mach-omap2/prcm.c
··· 28 28 #include "common.h" 29 29 #include <plat/prcm.h> 30 30 31 + #include "soc.h" 31 32 #include "clock.h" 32 33 #include "clock2xxx.h" 33 34 #include "cm2xxx_3xxx.h"
+1
arch/arm/mach-omap2/serial.c
··· 35 35 #include "omap_hwmod.h" 36 36 #include "omap_device.h" 37 37 #include "omap-pm.h" 38 + #include "soc.h" 38 39 #include "prm2xxx_3xxx.h" 39 40 #include "pm.h" 40 41 #include "cm2xxx_3xxx.h"
+467 -1
arch/arm/mach-omap2/soc.h
··· 1 - #include <plat/cpu.h> 1 + /* 2 + * OMAP cpu type detection 3 + * 4 + * Copyright (C) 2004, 2008 Nokia Corporation 5 + * 6 + * Copyright (C) 2009-11 Texas Instruments. 7 + * 8 + * Written by Tony Lindgren <tony.lindgren@nokia.com> 9 + * 10 + * Added OMAP4/5 specific defines - Santosh Shilimkar<santosh.shilimkar@ti.com> 11 + * 12 + * This program is free software; you can redistribute it and/or modify 13 + * it under the terms of the GNU General Public License as published by 14 + * the Free Software Foundation; either version 2 of the License, or 15 + * (at your option) any later version. 16 + * 17 + * This program is distributed in the hope that it will be useful, 18 + * but WITHOUT ANY WARRANTY; without even the implied warranty of 19 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 20 + * GNU General Public License for more details. 21 + * 22 + * You should have received a copy of the GNU General Public License 23 + * along with this program; if not, write to the Free Software 24 + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 25 + * 26 + */ 27 + 2 28 #include "omap24xx.h" 3 29 #include "omap34xx.h" 4 30 #include "omap44xx.h" 5 31 #include "ti81xx.h" 6 32 #include "am33xx.h" 7 33 #include "omap54xx.h" 34 + 35 + #ifndef __ASSEMBLY__ 36 + 37 + #include <linux/bitops.h> 38 + 39 + /* 40 + * Test if multicore OMAP support is needed 41 + */ 42 + #undef MULTI_OMAP2 43 + #undef OMAP_NAME 44 + 45 + #ifdef CONFIG_SOC_OMAP2420 46 + # ifdef OMAP_NAME 47 + # undef MULTI_OMAP2 48 + # define MULTI_OMAP2 49 + # else 50 + # define OMAP_NAME omap2420 51 + # endif 52 + #endif 53 + #ifdef CONFIG_SOC_OMAP2430 54 + # ifdef OMAP_NAME 55 + # undef MULTI_OMAP2 56 + # define MULTI_OMAP2 57 + # else 58 + # define OMAP_NAME omap2430 59 + # endif 60 + #endif 61 + #ifdef CONFIG_ARCH_OMAP3 62 + # ifdef OMAP_NAME 63 + # undef MULTI_OMAP2 64 + # define MULTI_OMAP2 65 + # else 66 + # define OMAP_NAME omap3 67 + # endif 68 + #endif 69 + #ifdef CONFIG_ARCH_OMAP4 70 + # ifdef OMAP_NAME 71 + # undef MULTI_OMAP2 72 + # define MULTI_OMAP2 73 + # else 74 + # define OMAP_NAME omap4 75 + # endif 76 + #endif 77 + 78 + #ifdef CONFIG_SOC_OMAP5 79 + # ifdef OMAP_NAME 80 + # undef MULTI_OMAP2 81 + # define MULTI_OMAP2 82 + # else 83 + # define OMAP_NAME omap5 84 + # endif 85 + #endif 86 + 87 + #ifdef CONFIG_SOC_AM33XX 88 + # ifdef OMAP_NAME 89 + # undef MULTI_OMAP2 90 + # define MULTI_OMAP2 91 + # else 92 + # define OMAP_NAME am33xx 93 + # endif 94 + #endif 95 + 96 + /* 97 + * Omap device type i.e. EMU/HS/TST/GP/BAD 98 + */ 99 + #define OMAP2_DEVICE_TYPE_TEST 0 100 + #define OMAP2_DEVICE_TYPE_EMU 1 101 + #define OMAP2_DEVICE_TYPE_SEC 2 102 + #define OMAP2_DEVICE_TYPE_GP 3 103 + #define OMAP2_DEVICE_TYPE_BAD 4 104 + 105 + int omap_type(void); 106 + 107 + /* 108 + * omap_rev bits: 109 + * CPU id bits (0730, 1510, 1710, 2422...) [31:16] 110 + * CPU revision (See _REV_ defined in cpu.h) [15:08] 111 + * CPU class bits (15xx, 16xx, 24xx, 34xx...) [07:00] 112 + */ 113 + unsigned int omap_rev(void); 114 + 115 + /* 116 + * Get the CPU revision for OMAP devices 117 + */ 118 + #define GET_OMAP_REVISION() ((omap_rev() >> 8) & 0xff) 119 + 120 + /* 121 + * Macros to group OMAP into cpu classes. 122 + * These can be used in most places. 123 + * cpu_is_omap24xx(): True for OMAP2420, OMAP2422, OMAP2423, OMAP2430 124 + * cpu_is_omap242x(): True for OMAP2420, OMAP2422, OMAP2423 125 + * cpu_is_omap243x(): True for OMAP2430 126 + * cpu_is_omap343x(): True for OMAP3430 127 + * cpu_is_omap443x(): True for OMAP4430 128 + * cpu_is_omap446x(): True for OMAP4460 129 + * cpu_is_omap447x(): True for OMAP4470 130 + * soc_is_omap543x(): True for OMAP5430, OMAP5432 131 + */ 132 + #define GET_OMAP_CLASS (omap_rev() & 0xff) 133 + 134 + #define IS_OMAP_CLASS(class, id) \ 135 + static inline int is_omap ##class (void) \ 136 + { \ 137 + return (GET_OMAP_CLASS == (id)) ? 1 : 0; \ 138 + } 139 + 140 + #define GET_AM_CLASS ((omap_rev() >> 24) & 0xff) 141 + 142 + #define IS_AM_CLASS(class, id) \ 143 + static inline int is_am ##class (void) \ 144 + { \ 145 + return (GET_AM_CLASS == (id)) ? 1 : 0; \ 146 + } 147 + 148 + #define GET_TI_CLASS ((omap_rev() >> 24) & 0xff) 149 + 150 + #define IS_TI_CLASS(class, id) \ 151 + static inline int is_ti ##class (void) \ 152 + { \ 153 + return (GET_TI_CLASS == (id)) ? 1 : 0; \ 154 + } 155 + 156 + #define GET_OMAP_SUBCLASS ((omap_rev() >> 20) & 0x0fff) 157 + 158 + #define IS_OMAP_SUBCLASS(subclass, id) \ 159 + static inline int is_omap ##subclass (void) \ 160 + { \ 161 + return (GET_OMAP_SUBCLASS == (id)) ? 1 : 0; \ 162 + } 163 + 164 + #define IS_TI_SUBCLASS(subclass, id) \ 165 + static inline int is_ti ##subclass (void) \ 166 + { \ 167 + return (GET_OMAP_SUBCLASS == (id)) ? 1 : 0; \ 168 + } 169 + 170 + #define IS_AM_SUBCLASS(subclass, id) \ 171 + static inline int is_am ##subclass (void) \ 172 + { \ 173 + return (GET_OMAP_SUBCLASS == (id)) ? 1 : 0; \ 174 + } 175 + 176 + IS_OMAP_CLASS(24xx, 0x24) 177 + IS_OMAP_CLASS(34xx, 0x34) 178 + IS_OMAP_CLASS(44xx, 0x44) 179 + IS_AM_CLASS(35xx, 0x35) 180 + IS_OMAP_CLASS(54xx, 0x54) 181 + IS_AM_CLASS(33xx, 0x33) 182 + 183 + IS_TI_CLASS(81xx, 0x81) 184 + 185 + IS_OMAP_SUBCLASS(242x, 0x242) 186 + IS_OMAP_SUBCLASS(243x, 0x243) 187 + IS_OMAP_SUBCLASS(343x, 0x343) 188 + IS_OMAP_SUBCLASS(363x, 0x363) 189 + IS_OMAP_SUBCLASS(443x, 0x443) 190 + IS_OMAP_SUBCLASS(446x, 0x446) 191 + IS_OMAP_SUBCLASS(447x, 0x447) 192 + IS_OMAP_SUBCLASS(543x, 0x543) 193 + 194 + IS_TI_SUBCLASS(816x, 0x816) 195 + IS_TI_SUBCLASS(814x, 0x814) 196 + IS_AM_SUBCLASS(335x, 0x335) 197 + 198 + #define cpu_is_omap24xx() 0 199 + #define cpu_is_omap242x() 0 200 + #define cpu_is_omap243x() 0 201 + #define cpu_is_omap34xx() 0 202 + #define cpu_is_omap343x() 0 203 + #define cpu_is_ti81xx() 0 204 + #define cpu_is_ti816x() 0 205 + #define cpu_is_ti814x() 0 206 + #define soc_is_am35xx() 0 207 + #define soc_is_am33xx() 0 208 + #define soc_is_am335x() 0 209 + #define cpu_is_omap44xx() 0 210 + #define cpu_is_omap443x() 0 211 + #define cpu_is_omap446x() 0 212 + #define cpu_is_omap447x() 0 213 + #define soc_is_omap54xx() 0 214 + #define soc_is_omap543x() 0 215 + 216 + #if defined(MULTI_OMAP2) 217 + # if defined(CONFIG_ARCH_OMAP2) 218 + # undef cpu_is_omap24xx 219 + # define cpu_is_omap24xx() is_omap24xx() 220 + # endif 221 + # if defined (CONFIG_SOC_OMAP2420) 222 + # undef cpu_is_omap242x 223 + # define cpu_is_omap242x() is_omap242x() 224 + # endif 225 + # if defined (CONFIG_SOC_OMAP2430) 226 + # undef cpu_is_omap243x 227 + # define cpu_is_omap243x() is_omap243x() 228 + # endif 229 + # if defined(CONFIG_ARCH_OMAP3) 230 + # undef cpu_is_omap34xx 231 + # undef cpu_is_omap343x 232 + # define cpu_is_omap34xx() is_omap34xx() 233 + # define cpu_is_omap343x() is_omap343x() 234 + # endif 235 + #else 236 + # if defined(CONFIG_ARCH_OMAP2) 237 + # undef cpu_is_omap24xx 238 + # define cpu_is_omap24xx() 1 239 + # endif 240 + # if defined(CONFIG_SOC_OMAP2420) 241 + # undef cpu_is_omap242x 242 + # define cpu_is_omap242x() 1 243 + # endif 244 + # if defined(CONFIG_SOC_OMAP2430) 245 + # undef cpu_is_omap243x 246 + # define cpu_is_omap243x() 1 247 + # endif 248 + # if defined(CONFIG_ARCH_OMAP3) 249 + # undef cpu_is_omap34xx 250 + # define cpu_is_omap34xx() 1 251 + # endif 252 + # if defined(CONFIG_SOC_OMAP3430) 253 + # undef cpu_is_omap343x 254 + # define cpu_is_omap343x() 1 255 + # endif 256 + #endif 257 + 258 + /* 259 + * Macros to detect individual cpu types. 260 + * These are only rarely needed. 261 + * cpu_is_omap2420(): True for OMAP2420 262 + * cpu_is_omap2422(): True for OMAP2422 263 + * cpu_is_omap2423(): True for OMAP2423 264 + * cpu_is_omap2430(): True for OMAP2430 265 + * cpu_is_omap3430(): True for OMAP3430 266 + */ 267 + #define GET_OMAP_TYPE ((omap_rev() >> 16) & 0xffff) 268 + 269 + #define IS_OMAP_TYPE(type, id) \ 270 + static inline int is_omap ##type (void) \ 271 + { \ 272 + return (GET_OMAP_TYPE == (id)) ? 1 : 0; \ 273 + } 274 + 275 + IS_OMAP_TYPE(2420, 0x2420) 276 + IS_OMAP_TYPE(2422, 0x2422) 277 + IS_OMAP_TYPE(2423, 0x2423) 278 + IS_OMAP_TYPE(2430, 0x2430) 279 + IS_OMAP_TYPE(3430, 0x3430) 280 + 281 + #define cpu_is_omap2420() 0 282 + #define cpu_is_omap2422() 0 283 + #define cpu_is_omap2423() 0 284 + #define cpu_is_omap2430() 0 285 + #define cpu_is_omap3430() 0 286 + #define cpu_is_omap3630() 0 287 + #define soc_is_omap5430() 0 288 + 289 + /* These are needed for the common code */ 290 + #ifdef CONFIG_ARCH_OMAP2PLUS 291 + #define cpu_is_omap7xx() 0 292 + #define cpu_is_omap15xx() 0 293 + #define cpu_is_omap16xx() 0 294 + #define cpu_is_omap1510() 0 295 + #define cpu_is_omap1610() 0 296 + #define cpu_is_omap1611() 0 297 + #define cpu_is_omap1621() 0 298 + #define cpu_is_omap1710() 0 299 + #define cpu_class_is_omap1() 0 300 + #define cpu_class_is_omap2() 1 301 + #endif 302 + 303 + #if defined(CONFIG_ARCH_OMAP2) 304 + # undef cpu_is_omap2420 305 + # undef cpu_is_omap2422 306 + # undef cpu_is_omap2423 307 + # undef cpu_is_omap2430 308 + # define cpu_is_omap2420() is_omap2420() 309 + # define cpu_is_omap2422() is_omap2422() 310 + # define cpu_is_omap2423() is_omap2423() 311 + # define cpu_is_omap2430() is_omap2430() 312 + #endif 313 + 314 + #if defined(CONFIG_ARCH_OMAP3) 315 + # undef cpu_is_omap3430 316 + # undef cpu_is_ti81xx 317 + # undef cpu_is_ti816x 318 + # undef cpu_is_ti814x 319 + # undef soc_is_am35xx 320 + # define cpu_is_omap3430() is_omap3430() 321 + # undef cpu_is_omap3630 322 + # define cpu_is_omap3630() is_omap363x() 323 + # define cpu_is_ti81xx() is_ti81xx() 324 + # define cpu_is_ti816x() is_ti816x() 325 + # define cpu_is_ti814x() is_ti814x() 326 + # define soc_is_am35xx() is_am35xx() 327 + #endif 328 + 329 + # if defined(CONFIG_SOC_AM33XX) 330 + # undef soc_is_am33xx 331 + # undef soc_is_am335x 332 + # define soc_is_am33xx() is_am33xx() 333 + # define soc_is_am335x() is_am335x() 334 + #endif 335 + 336 + # if defined(CONFIG_ARCH_OMAP4) 337 + # undef cpu_is_omap44xx 338 + # undef cpu_is_omap443x 339 + # undef cpu_is_omap446x 340 + # undef cpu_is_omap447x 341 + # define cpu_is_omap44xx() is_omap44xx() 342 + # define cpu_is_omap443x() is_omap443x() 343 + # define cpu_is_omap446x() is_omap446x() 344 + # define cpu_is_omap447x() is_omap447x() 345 + # endif 346 + 347 + # if defined(CONFIG_SOC_OMAP5) 348 + # undef soc_is_omap54xx 349 + # undef soc_is_omap543x 350 + # define soc_is_omap54xx() is_omap54xx() 351 + # define soc_is_omap543x() is_omap543x() 352 + #endif 353 + 354 + /* Various silicon revisions for omap2 */ 355 + #define OMAP242X_CLASS 0x24200024 356 + #define OMAP2420_REV_ES1_0 OMAP242X_CLASS 357 + #define OMAP2420_REV_ES2_0 (OMAP242X_CLASS | (0x1 << 8)) 358 + 359 + #define OMAP243X_CLASS 0x24300024 360 + #define OMAP2430_REV_ES1_0 OMAP243X_CLASS 361 + 362 + #define OMAP343X_CLASS 0x34300034 363 + #define OMAP3430_REV_ES1_0 OMAP343X_CLASS 364 + #define OMAP3430_REV_ES2_0 (OMAP343X_CLASS | (0x1 << 8)) 365 + #define OMAP3430_REV_ES2_1 (OMAP343X_CLASS | (0x2 << 8)) 366 + #define OMAP3430_REV_ES3_0 (OMAP343X_CLASS | (0x3 << 8)) 367 + #define OMAP3430_REV_ES3_1 (OMAP343X_CLASS | (0x4 << 8)) 368 + #define OMAP3430_REV_ES3_1_2 (OMAP343X_CLASS | (0x5 << 8)) 369 + 370 + #define OMAP363X_CLASS 0x36300034 371 + #define OMAP3630_REV_ES1_0 OMAP363X_CLASS 372 + #define OMAP3630_REV_ES1_1 (OMAP363X_CLASS | (0x1 << 8)) 373 + #define OMAP3630_REV_ES1_2 (OMAP363X_CLASS | (0x2 << 8)) 374 + 375 + #define TI816X_CLASS 0x81600034 376 + #define TI8168_REV_ES1_0 TI816X_CLASS 377 + #define TI8168_REV_ES1_1 (TI816X_CLASS | (0x1 << 8)) 378 + 379 + #define TI814X_CLASS 0x81400034 380 + #define TI8148_REV_ES1_0 TI814X_CLASS 381 + #define TI8148_REV_ES2_0 (TI814X_CLASS | (0x1 << 8)) 382 + #define TI8148_REV_ES2_1 (TI814X_CLASS | (0x2 << 8)) 383 + 384 + #define AM35XX_CLASS 0x35170034 385 + #define AM35XX_REV_ES1_0 AM35XX_CLASS 386 + #define AM35XX_REV_ES1_1 (AM35XX_CLASS | (0x1 << 8)) 387 + 388 + #define AM335X_CLASS 0x33500033 389 + #define AM335X_REV_ES1_0 AM335X_CLASS 390 + 391 + #define OMAP443X_CLASS 0x44300044 392 + #define OMAP4430_REV_ES1_0 (OMAP443X_CLASS | (0x10 << 8)) 393 + #define OMAP4430_REV_ES2_0 (OMAP443X_CLASS | (0x20 << 8)) 394 + #define OMAP4430_REV_ES2_1 (OMAP443X_CLASS | (0x21 << 8)) 395 + #define OMAP4430_REV_ES2_2 (OMAP443X_CLASS | (0x22 << 8)) 396 + #define OMAP4430_REV_ES2_3 (OMAP443X_CLASS | (0x23 << 8)) 397 + 398 + #define OMAP446X_CLASS 0x44600044 399 + #define OMAP4460_REV_ES1_0 (OMAP446X_CLASS | (0x10 << 8)) 400 + #define OMAP4460_REV_ES1_1 (OMAP446X_CLASS | (0x11 << 8)) 401 + 402 + #define OMAP447X_CLASS 0x44700044 403 + #define OMAP4470_REV_ES1_0 (OMAP447X_CLASS | (0x10 << 8)) 404 + 405 + #define OMAP54XX_CLASS 0x54000054 406 + #define OMAP5430_REV_ES1_0 (OMAP54XX_CLASS | (0x30 << 16) | (0x10 << 8)) 407 + #define OMAP5432_REV_ES1_0 (OMAP54XX_CLASS | (0x32 << 16) | (0x10 << 8)) 408 + 409 + void omap2xxx_check_revision(void); 410 + void omap3xxx_check_revision(void); 411 + void omap4xxx_check_revision(void); 412 + void omap5xxx_check_revision(void); 413 + void omap3xxx_check_features(void); 414 + void ti81xx_check_features(void); 415 + void omap4xxx_check_features(void); 416 + 417 + /* 418 + * Runtime detection of OMAP3 features 419 + * 420 + * OMAP3_HAS_IO_CHAIN_CTRL: Some later members of the OMAP3 chip 421 + * family have OS-level control over the I/O chain clock. This is 422 + * to avoid a window during which wakeups could potentially be lost 423 + * during powerdomain transitions. If this bit is set, it 424 + * indicates that the chip does support OS-level control of this 425 + * feature. 426 + */ 427 + extern u32 omap_features; 428 + 429 + #define OMAP3_HAS_L2CACHE BIT(0) 430 + #define OMAP3_HAS_IVA BIT(1) 431 + #define OMAP3_HAS_SGX BIT(2) 432 + #define OMAP3_HAS_NEON BIT(3) 433 + #define OMAP3_HAS_ISP BIT(4) 434 + #define OMAP3_HAS_192MHZ_CLK BIT(5) 435 + #define OMAP3_HAS_IO_WAKEUP BIT(6) 436 + #define OMAP3_HAS_SDRC BIT(7) 437 + #define OMAP3_HAS_IO_CHAIN_CTRL BIT(8) 438 + #define OMAP4_HAS_MPU_1GHZ BIT(9) 439 + #define OMAP4_HAS_MPU_1_2GHZ BIT(10) 440 + #define OMAP4_HAS_MPU_1_5GHZ BIT(11) 441 + 442 + 443 + #define OMAP3_HAS_FEATURE(feat,flag) \ 444 + static inline unsigned int omap3_has_ ##feat(void) \ 445 + { \ 446 + return omap_features & OMAP3_HAS_ ##flag; \ 447 + } \ 448 + 449 + OMAP3_HAS_FEATURE(l2cache, L2CACHE) 450 + OMAP3_HAS_FEATURE(sgx, SGX) 451 + OMAP3_HAS_FEATURE(iva, IVA) 452 + OMAP3_HAS_FEATURE(neon, NEON) 453 + OMAP3_HAS_FEATURE(isp, ISP) 454 + OMAP3_HAS_FEATURE(192mhz_clk, 192MHZ_CLK) 455 + OMAP3_HAS_FEATURE(io_wakeup, IO_WAKEUP) 456 + OMAP3_HAS_FEATURE(sdrc, SDRC) 457 + OMAP3_HAS_FEATURE(io_chain_ctrl, IO_CHAIN_CTRL) 458 + 459 + /* 460 + * Runtime detection of OMAP4 features 461 + */ 462 + #define OMAP4_HAS_FEATURE(feat, flag) \ 463 + static inline unsigned int omap4_has_ ##feat(void) \ 464 + { \ 465 + return omap_features & OMAP4_HAS_ ##flag; \ 466 + } \ 467 + 468 + OMAP4_HAS_FEATURE(mpu_1ghz, MPU_1GHZ) 469 + OMAP4_HAS_FEATURE(mpu_1_2ghz, MPU_1_2GHZ) 470 + OMAP4_HAS_FEATURE(mpu_1_5ghz, MPU_1_5GHZ) 471 + 472 + #endif /* __ASSEMBLY__ */ 473 +
+1 -1
arch/arm/mach-omap2/sr_device.c
··· 23 23 #include <linux/slab.h> 24 24 #include <linux/io.h> 25 25 26 + #include "soc.h" 26 27 #include "omap_device.h" 27 - 28 28 #include "voltage.h" 29 29 #include "control.h" 30 30 #include "pm.h"
+1
arch/arm/mach-omap2/usb-host.c
··· 26 26 #include <asm/io.h> 27 27 28 28 #include <plat/usb.h> 29 + #include "soc.h" 29 30 #include "omap_device.h" 30 31 31 32 #include "mux.h"
+1 -2
arch/arm/mach-omap2/usb-musb.c
··· 28 28 #include <plat/usb.h> 29 29 #include "omap_device.h" 30 30 31 - #include "am35xx.h" 32 - 31 + #include "soc.h" 33 32 #include "mux.h" 34 33 35 34 static struct musb_hdrc_config musb_config = {
+3 -1
arch/arm/plat-omap/dma.c
··· 36 36 #include <linux/slab.h> 37 37 #include <linux/delay.h> 38 38 39 - #include <plat/cpu.h> 40 39 #include <plat-omap/dma-omap.h> 40 + 41 + #include "../mach-omap1/soc.h" 42 + #include "../mach-omap2/soc.h" 41 43 42 44 /* 43 45 * MAX_LOGICAL_DMA_CH_COUNT: the maximum number of logical DMA
+3 -1
arch/arm/plat-omap/i2c.c
··· 32 32 #include <linux/clk.h> 33 33 34 34 #include <mach/irqs.h> 35 - #include <plat/cpu.h> 35 + 36 + #include "../mach-omap1/soc.h" 37 + #include "../mach-omap2/soc.h" 36 38 37 39 #include "i2c.h" 38 40
+4 -558
arch/arm/plat-omap/include/plat/cpu.h
··· 1 1 /* 2 - * arch/arm/plat-omap/include/mach/cpu.h 3 - * 4 2 * OMAP cpu type detection 5 3 * 6 4 * Copyright (C) 2004, 2008 Nokia Corporation ··· 28 30 #ifndef __ASM_ARCH_OMAP_CPU_H 29 31 #define __ASM_ARCH_OMAP_CPU_H 30 32 31 - #ifndef __ASSEMBLY__ 33 + #ifdef CONFIG_ARCH_OMAP1 34 + #include "../../mach-omap1/soc.h" 35 + #endif 32 36 33 - #include <linux/bitops.h> 34 - 35 - /* 36 - * Test if multicore OMAP support is needed 37 - */ 38 - #undef MULTI_OMAP1 39 - #undef MULTI_OMAP2 40 - #undef OMAP_NAME 41 - 42 - #ifdef CONFIG_ARCH_OMAP730 43 - # ifdef OMAP_NAME 44 - # undef MULTI_OMAP1 45 - # define MULTI_OMAP1 46 - # else 47 - # define OMAP_NAME omap730 48 - # endif 49 - #endif 50 - #ifdef CONFIG_ARCH_OMAP850 51 - # ifdef OMAP_NAME 52 - # undef MULTI_OMAP1 53 - # define MULTI_OMAP1 54 - # else 55 - # define OMAP_NAME omap850 56 - # endif 57 - #endif 58 - #ifdef CONFIG_ARCH_OMAP15XX 59 - # ifdef OMAP_NAME 60 - # undef MULTI_OMAP1 61 - # define MULTI_OMAP1 62 - # else 63 - # define OMAP_NAME omap1510 64 - # endif 65 - #endif 66 - #ifdef CONFIG_ARCH_OMAP16XX 67 - # ifdef OMAP_NAME 68 - # undef MULTI_OMAP1 69 - # define MULTI_OMAP1 70 - # else 71 - # define OMAP_NAME omap16xx 72 - # endif 73 - #endif 74 37 #ifdef CONFIG_ARCH_OMAP2PLUS 75 - # if (defined(OMAP_NAME) || defined(MULTI_OMAP1)) 76 - # error "OMAP1 and OMAP2PLUS can't be selected at the same time" 77 - # endif 78 - #endif 79 - #ifdef CONFIG_SOC_OMAP2420 80 - # ifdef OMAP_NAME 81 - # undef MULTI_OMAP2 82 - # define MULTI_OMAP2 83 - # else 84 - # define OMAP_NAME omap2420 85 - # endif 86 - #endif 87 - #ifdef CONFIG_SOC_OMAP2430 88 - # ifdef OMAP_NAME 89 - # undef MULTI_OMAP2 90 - # define MULTI_OMAP2 91 - # else 92 - # define OMAP_NAME omap2430 93 - # endif 94 - #endif 95 - #ifdef CONFIG_ARCH_OMAP3 96 - # ifdef OMAP_NAME 97 - # undef MULTI_OMAP2 98 - # define MULTI_OMAP2 99 - # else 100 - # define OMAP_NAME omap3 101 - # endif 102 - #endif 103 - #ifdef CONFIG_ARCH_OMAP4 104 - # ifdef OMAP_NAME 105 - # undef MULTI_OMAP2 106 - # define MULTI_OMAP2 107 - # else 108 - # define OMAP_NAME omap4 109 - # endif 38 + #include "../../mach-omap2/soc.h" 110 39 #endif 111 40 112 - #ifdef CONFIG_SOC_OMAP5 113 - # ifdef OMAP_NAME 114 - # undef MULTI_OMAP2 115 - # define MULTI_OMAP2 116 - # else 117 - # define OMAP_NAME omap5 118 - # endif 119 - #endif 120 - 121 - #ifdef CONFIG_SOC_AM33XX 122 - # ifdef OMAP_NAME 123 - # undef MULTI_OMAP2 124 - # define MULTI_OMAP2 125 - # else 126 - # define OMAP_NAME am33xx 127 - # endif 128 - #endif 129 - 130 - /* 131 - * Omap device type i.e. EMU/HS/TST/GP/BAD 132 - */ 133 - #define OMAP2_DEVICE_TYPE_TEST 0 134 - #define OMAP2_DEVICE_TYPE_EMU 1 135 - #define OMAP2_DEVICE_TYPE_SEC 2 136 - #define OMAP2_DEVICE_TYPE_GP 3 137 - #define OMAP2_DEVICE_TYPE_BAD 4 138 - 139 - int omap_type(void); 140 - 141 - /* 142 - * omap_rev bits: 143 - * CPU id bits (0730, 1510, 1710, 2422...) [31:16] 144 - * CPU revision (See _REV_ defined in cpu.h) [15:08] 145 - * CPU class bits (15xx, 16xx, 24xx, 34xx...) [07:00] 146 - */ 147 - unsigned int omap_rev(void); 148 - 149 - /* 150 - * Get the CPU revision for OMAP devices 151 - */ 152 - #define GET_OMAP_REVISION() ((omap_rev() >> 8) & 0xff) 153 - 154 - /* 155 - * Macros to group OMAP into cpu classes. 156 - * These can be used in most places. 157 - * cpu_is_omap7xx(): True for OMAP730, OMAP850 158 - * cpu_is_omap15xx(): True for OMAP1510, OMAP5910 and OMAP310 159 - * cpu_is_omap16xx(): True for OMAP1610, OMAP5912 and OMAP1710 160 - * cpu_is_omap24xx(): True for OMAP2420, OMAP2422, OMAP2423, OMAP2430 161 - * cpu_is_omap242x(): True for OMAP2420, OMAP2422, OMAP2423 162 - * cpu_is_omap243x(): True for OMAP2430 163 - * cpu_is_omap343x(): True for OMAP3430 164 - * cpu_is_omap443x(): True for OMAP4430 165 - * cpu_is_omap446x(): True for OMAP4460 166 - * cpu_is_omap447x(): True for OMAP4470 167 - * soc_is_omap543x(): True for OMAP5430, OMAP5432 168 - */ 169 - #define GET_OMAP_CLASS (omap_rev() & 0xff) 170 - 171 - #define IS_OMAP_CLASS(class, id) \ 172 - static inline int is_omap ##class (void) \ 173 - { \ 174 - return (GET_OMAP_CLASS == (id)) ? 1 : 0; \ 175 - } 176 - 177 - #define GET_AM_CLASS ((omap_rev() >> 24) & 0xff) 178 - 179 - #define IS_AM_CLASS(class, id) \ 180 - static inline int is_am ##class (void) \ 181 - { \ 182 - return (GET_AM_CLASS == (id)) ? 1 : 0; \ 183 - } 184 - 185 - #define GET_TI_CLASS ((omap_rev() >> 24) & 0xff) 186 - 187 - #define IS_TI_CLASS(class, id) \ 188 - static inline int is_ti ##class (void) \ 189 - { \ 190 - return (GET_TI_CLASS == (id)) ? 1 : 0; \ 191 - } 192 - 193 - #define GET_OMAP_SUBCLASS ((omap_rev() >> 20) & 0x0fff) 194 - 195 - #define IS_OMAP_SUBCLASS(subclass, id) \ 196 - static inline int is_omap ##subclass (void) \ 197 - { \ 198 - return (GET_OMAP_SUBCLASS == (id)) ? 1 : 0; \ 199 - } 200 - 201 - #define IS_TI_SUBCLASS(subclass, id) \ 202 - static inline int is_ti ##subclass (void) \ 203 - { \ 204 - return (GET_OMAP_SUBCLASS == (id)) ? 1 : 0; \ 205 - } 206 - 207 - #define IS_AM_SUBCLASS(subclass, id) \ 208 - static inline int is_am ##subclass (void) \ 209 - { \ 210 - return (GET_OMAP_SUBCLASS == (id)) ? 1 : 0; \ 211 - } 212 - 213 - IS_OMAP_CLASS(7xx, 0x07) 214 - IS_OMAP_CLASS(15xx, 0x15) 215 - IS_OMAP_CLASS(16xx, 0x16) 216 - IS_OMAP_CLASS(24xx, 0x24) 217 - IS_OMAP_CLASS(34xx, 0x34) 218 - IS_OMAP_CLASS(44xx, 0x44) 219 - IS_AM_CLASS(35xx, 0x35) 220 - IS_OMAP_CLASS(54xx, 0x54) 221 - IS_AM_CLASS(33xx, 0x33) 222 - 223 - IS_TI_CLASS(81xx, 0x81) 224 - 225 - IS_OMAP_SUBCLASS(242x, 0x242) 226 - IS_OMAP_SUBCLASS(243x, 0x243) 227 - IS_OMAP_SUBCLASS(343x, 0x343) 228 - IS_OMAP_SUBCLASS(363x, 0x363) 229 - IS_OMAP_SUBCLASS(443x, 0x443) 230 - IS_OMAP_SUBCLASS(446x, 0x446) 231 - IS_OMAP_SUBCLASS(447x, 0x447) 232 - IS_OMAP_SUBCLASS(543x, 0x543) 233 - 234 - IS_TI_SUBCLASS(816x, 0x816) 235 - IS_TI_SUBCLASS(814x, 0x814) 236 - IS_AM_SUBCLASS(335x, 0x335) 237 - 238 - #define cpu_is_omap7xx() 0 239 - #define cpu_is_omap15xx() 0 240 - #define cpu_is_omap16xx() 0 241 - #define cpu_is_omap24xx() 0 242 - #define cpu_is_omap242x() 0 243 - #define cpu_is_omap243x() 0 244 - #define cpu_is_omap34xx() 0 245 - #define cpu_is_omap343x() 0 246 - #define cpu_is_ti81xx() 0 247 - #define cpu_is_ti816x() 0 248 - #define cpu_is_ti814x() 0 249 - #define soc_is_am35xx() 0 250 - #define soc_is_am33xx() 0 251 - #define soc_is_am335x() 0 252 - #define cpu_is_omap44xx() 0 253 - #define cpu_is_omap443x() 0 254 - #define cpu_is_omap446x() 0 255 - #define cpu_is_omap447x() 0 256 - #define soc_is_omap54xx() 0 257 - #define soc_is_omap543x() 0 258 - 259 - #if defined(MULTI_OMAP1) 260 - # if defined(CONFIG_ARCH_OMAP730) 261 - # undef cpu_is_omap7xx 262 - # define cpu_is_omap7xx() is_omap7xx() 263 - # endif 264 - # if defined(CONFIG_ARCH_OMAP850) 265 - # undef cpu_is_omap7xx 266 - # define cpu_is_omap7xx() is_omap7xx() 267 - # endif 268 - # if defined(CONFIG_ARCH_OMAP15XX) 269 - # undef cpu_is_omap15xx 270 - # define cpu_is_omap15xx() is_omap15xx() 271 - # endif 272 - # if defined(CONFIG_ARCH_OMAP16XX) 273 - # undef cpu_is_omap16xx 274 - # define cpu_is_omap16xx() is_omap16xx() 275 - # endif 276 - #else 277 - # if defined(CONFIG_ARCH_OMAP730) 278 - # undef cpu_is_omap7xx 279 - # define cpu_is_omap7xx() 1 280 - # endif 281 - # if defined(CONFIG_ARCH_OMAP850) 282 - # undef cpu_is_omap7xx 283 - # define cpu_is_omap7xx() 1 284 - # endif 285 - # if defined(CONFIG_ARCH_OMAP15XX) 286 - # undef cpu_is_omap15xx 287 - # define cpu_is_omap15xx() 1 288 - # endif 289 - # if defined(CONFIG_ARCH_OMAP16XX) 290 - # undef cpu_is_omap16xx 291 - # define cpu_is_omap16xx() 1 292 - # endif 293 - #endif 294 - 295 - #if defined(MULTI_OMAP2) 296 - # if defined(CONFIG_ARCH_OMAP2) 297 - # undef cpu_is_omap24xx 298 - # define cpu_is_omap24xx() is_omap24xx() 299 - # endif 300 - # if defined (CONFIG_SOC_OMAP2420) 301 - # undef cpu_is_omap242x 302 - # define cpu_is_omap242x() is_omap242x() 303 - # endif 304 - # if defined (CONFIG_SOC_OMAP2430) 305 - # undef cpu_is_omap243x 306 - # define cpu_is_omap243x() is_omap243x() 307 - # endif 308 - # if defined(CONFIG_ARCH_OMAP3) 309 - # undef cpu_is_omap34xx 310 - # undef cpu_is_omap343x 311 - # define cpu_is_omap34xx() is_omap34xx() 312 - # define cpu_is_omap343x() is_omap343x() 313 - # endif 314 - #else 315 - # if defined(CONFIG_ARCH_OMAP2) 316 - # undef cpu_is_omap24xx 317 - # define cpu_is_omap24xx() 1 318 - # endif 319 - # if defined(CONFIG_SOC_OMAP2420) 320 - # undef cpu_is_omap242x 321 - # define cpu_is_omap242x() 1 322 - # endif 323 - # if defined(CONFIG_SOC_OMAP2430) 324 - # undef cpu_is_omap243x 325 - # define cpu_is_omap243x() 1 326 - # endif 327 - # if defined(CONFIG_ARCH_OMAP3) 328 - # undef cpu_is_omap34xx 329 - # define cpu_is_omap34xx() 1 330 - # endif 331 - # if defined(CONFIG_SOC_OMAP3430) 332 - # undef cpu_is_omap343x 333 - # define cpu_is_omap343x() 1 334 - # endif 335 - #endif 336 - 337 - /* 338 - * Macros to detect individual cpu types. 339 - * These are only rarely needed. 340 - * cpu_is_omap310(): True for OMAP310 341 - * cpu_is_omap1510(): True for OMAP1510 342 - * cpu_is_omap1610(): True for OMAP1610 343 - * cpu_is_omap1611(): True for OMAP1611 344 - * cpu_is_omap5912(): True for OMAP5912 345 - * cpu_is_omap1621(): True for OMAP1621 346 - * cpu_is_omap1710(): True for OMAP1710 347 - * cpu_is_omap2420(): True for OMAP2420 348 - * cpu_is_omap2422(): True for OMAP2422 349 - * cpu_is_omap2423(): True for OMAP2423 350 - * cpu_is_omap2430(): True for OMAP2430 351 - * cpu_is_omap3430(): True for OMAP3430 352 - */ 353 - #define GET_OMAP_TYPE ((omap_rev() >> 16) & 0xffff) 354 - 355 - #define IS_OMAP_TYPE(type, id) \ 356 - static inline int is_omap ##type (void) \ 357 - { \ 358 - return (GET_OMAP_TYPE == (id)) ? 1 : 0; \ 359 - } 360 - 361 - IS_OMAP_TYPE(310, 0x0310) 362 - IS_OMAP_TYPE(1510, 0x1510) 363 - IS_OMAP_TYPE(1610, 0x1610) 364 - IS_OMAP_TYPE(1611, 0x1611) 365 - IS_OMAP_TYPE(5912, 0x1611) 366 - IS_OMAP_TYPE(1621, 0x1621) 367 - IS_OMAP_TYPE(1710, 0x1710) 368 - IS_OMAP_TYPE(2420, 0x2420) 369 - IS_OMAP_TYPE(2422, 0x2422) 370 - IS_OMAP_TYPE(2423, 0x2423) 371 - IS_OMAP_TYPE(2430, 0x2430) 372 - IS_OMAP_TYPE(3430, 0x3430) 373 - 374 - #define cpu_is_omap310() 0 375 - #define cpu_is_omap1510() 0 376 - #define cpu_is_omap1610() 0 377 - #define cpu_is_omap5912() 0 378 - #define cpu_is_omap1611() 0 379 - #define cpu_is_omap1621() 0 380 - #define cpu_is_omap1710() 0 381 - #define cpu_is_omap2420() 0 382 - #define cpu_is_omap2422() 0 383 - #define cpu_is_omap2423() 0 384 - #define cpu_is_omap2430() 0 385 - #define cpu_is_omap3430() 0 386 - #define cpu_is_omap3630() 0 387 - #define soc_is_omap5430() 0 388 - 389 - /* 390 - * Whether we have MULTI_OMAP1 or not, we still need to distinguish 391 - * between 310 vs. 1510 and 1611B/5912 vs. 1710. 392 - */ 393 - 394 - #if defined(CONFIG_ARCH_OMAP15XX) 395 - # undef cpu_is_omap310 396 - # undef cpu_is_omap1510 397 - # define cpu_is_omap310() is_omap310() 398 - # define cpu_is_omap1510() is_omap1510() 399 - #endif 400 - 401 - #if defined(CONFIG_ARCH_OMAP16XX) 402 - # undef cpu_is_omap1610 403 - # undef cpu_is_omap1611 404 - # undef cpu_is_omap5912 405 - # undef cpu_is_omap1621 406 - # undef cpu_is_omap1710 407 - # define cpu_is_omap1610() is_omap1610() 408 - # define cpu_is_omap1611() is_omap1611() 409 - # define cpu_is_omap5912() is_omap5912() 410 - # define cpu_is_omap1621() is_omap1621() 411 - # define cpu_is_omap1710() is_omap1710() 412 - #endif 413 - 414 - #if defined(CONFIG_ARCH_OMAP2) 415 - # undef cpu_is_omap2420 416 - # undef cpu_is_omap2422 417 - # undef cpu_is_omap2423 418 - # undef cpu_is_omap2430 419 - # define cpu_is_omap2420() is_omap2420() 420 - # define cpu_is_omap2422() is_omap2422() 421 - # define cpu_is_omap2423() is_omap2423() 422 - # define cpu_is_omap2430() is_omap2430() 423 - #endif 424 - 425 - #if defined(CONFIG_ARCH_OMAP3) 426 - # undef cpu_is_omap3430 427 - # undef cpu_is_ti81xx 428 - # undef cpu_is_ti816x 429 - # undef cpu_is_ti814x 430 - # undef soc_is_am35xx 431 - # define cpu_is_omap3430() is_omap3430() 432 - # undef cpu_is_omap3630 433 - # define cpu_is_omap3630() is_omap363x() 434 - # define cpu_is_ti81xx() is_ti81xx() 435 - # define cpu_is_ti816x() is_ti816x() 436 - # define cpu_is_ti814x() is_ti814x() 437 - # define soc_is_am35xx() is_am35xx() 438 - #endif 439 - 440 - # if defined(CONFIG_SOC_AM33XX) 441 - # undef soc_is_am33xx 442 - # undef soc_is_am335x 443 - # define soc_is_am33xx() is_am33xx() 444 - # define soc_is_am335x() is_am335x() 445 - #endif 446 - 447 - # if defined(CONFIG_ARCH_OMAP4) 448 - # undef cpu_is_omap44xx 449 - # undef cpu_is_omap443x 450 - # undef cpu_is_omap446x 451 - # undef cpu_is_omap447x 452 - # define cpu_is_omap44xx() is_omap44xx() 453 - # define cpu_is_omap443x() is_omap443x() 454 - # define cpu_is_omap446x() is_omap446x() 455 - # define cpu_is_omap447x() is_omap447x() 456 - # endif 457 - 458 - # if defined(CONFIG_SOC_OMAP5) 459 - # undef soc_is_omap54xx 460 - # undef soc_is_omap543x 461 - # define soc_is_omap54xx() is_omap54xx() 462 - # define soc_is_omap543x() is_omap543x() 463 - #endif 464 - 465 - /* Macros to detect if we have OMAP1 or OMAP2 */ 466 - #define cpu_class_is_omap1() (cpu_is_omap7xx() || cpu_is_omap15xx() || \ 467 - cpu_is_omap16xx()) 468 - #define cpu_class_is_omap2() (cpu_is_omap24xx() || cpu_is_omap34xx() || \ 469 - cpu_is_omap44xx() || soc_is_omap54xx() || \ 470 - soc_is_am33xx()) 471 - 472 - /* Various silicon revisions for omap2 */ 473 - #define OMAP242X_CLASS 0x24200024 474 - #define OMAP2420_REV_ES1_0 OMAP242X_CLASS 475 - #define OMAP2420_REV_ES2_0 (OMAP242X_CLASS | (0x1 << 8)) 476 - 477 - #define OMAP243X_CLASS 0x24300024 478 - #define OMAP2430_REV_ES1_0 OMAP243X_CLASS 479 - 480 - #define OMAP343X_CLASS 0x34300034 481 - #define OMAP3430_REV_ES1_0 OMAP343X_CLASS 482 - #define OMAP3430_REV_ES2_0 (OMAP343X_CLASS | (0x1 << 8)) 483 - #define OMAP3430_REV_ES2_1 (OMAP343X_CLASS | (0x2 << 8)) 484 - #define OMAP3430_REV_ES3_0 (OMAP343X_CLASS | (0x3 << 8)) 485 - #define OMAP3430_REV_ES3_1 (OMAP343X_CLASS | (0x4 << 8)) 486 - #define OMAP3430_REV_ES3_1_2 (OMAP343X_CLASS | (0x5 << 8)) 487 - 488 - #define OMAP363X_CLASS 0x36300034 489 - #define OMAP3630_REV_ES1_0 OMAP363X_CLASS 490 - #define OMAP3630_REV_ES1_1 (OMAP363X_CLASS | (0x1 << 8)) 491 - #define OMAP3630_REV_ES1_2 (OMAP363X_CLASS | (0x2 << 8)) 492 - 493 - #define TI816X_CLASS 0x81600034 494 - #define TI8168_REV_ES1_0 TI816X_CLASS 495 - #define TI8168_REV_ES1_1 (TI816X_CLASS | (0x1 << 8)) 496 - 497 - #define TI814X_CLASS 0x81400034 498 - #define TI8148_REV_ES1_0 TI814X_CLASS 499 - #define TI8148_REV_ES2_0 (TI814X_CLASS | (0x1 << 8)) 500 - #define TI8148_REV_ES2_1 (TI814X_CLASS | (0x2 << 8)) 501 - 502 - #define AM35XX_CLASS 0x35170034 503 - #define AM35XX_REV_ES1_0 AM35XX_CLASS 504 - #define AM35XX_REV_ES1_1 (AM35XX_CLASS | (0x1 << 8)) 505 - 506 - #define AM335X_CLASS 0x33500033 507 - #define AM335X_REV_ES1_0 AM335X_CLASS 508 - 509 - #define OMAP443X_CLASS 0x44300044 510 - #define OMAP4430_REV_ES1_0 (OMAP443X_CLASS | (0x10 << 8)) 511 - #define OMAP4430_REV_ES2_0 (OMAP443X_CLASS | (0x20 << 8)) 512 - #define OMAP4430_REV_ES2_1 (OMAP443X_CLASS | (0x21 << 8)) 513 - #define OMAP4430_REV_ES2_2 (OMAP443X_CLASS | (0x22 << 8)) 514 - #define OMAP4430_REV_ES2_3 (OMAP443X_CLASS | (0x23 << 8)) 515 - 516 - #define OMAP446X_CLASS 0x44600044 517 - #define OMAP4460_REV_ES1_0 (OMAP446X_CLASS | (0x10 << 8)) 518 - #define OMAP4460_REV_ES1_1 (OMAP446X_CLASS | (0x11 << 8)) 519 - 520 - #define OMAP447X_CLASS 0x44700044 521 - #define OMAP4470_REV_ES1_0 (OMAP447X_CLASS | (0x10 << 8)) 522 - 523 - #define OMAP54XX_CLASS 0x54000054 524 - #define OMAP5430_REV_ES1_0 (OMAP54XX_CLASS | (0x30 << 16) | (0x10 << 8)) 525 - #define OMAP5432_REV_ES1_0 (OMAP54XX_CLASS | (0x32 << 16) | (0x10 << 8)) 526 - 527 - void omap2xxx_check_revision(void); 528 - void omap3xxx_check_revision(void); 529 - void omap4xxx_check_revision(void); 530 - void omap5xxx_check_revision(void); 531 - void omap3xxx_check_features(void); 532 - void ti81xx_check_features(void); 533 - void omap4xxx_check_features(void); 534 - 535 - /* 536 - * Runtime detection of OMAP3 features 537 - * 538 - * OMAP3_HAS_IO_CHAIN_CTRL: Some later members of the OMAP3 chip 539 - * family have OS-level control over the I/O chain clock. This is 540 - * to avoid a window during which wakeups could potentially be lost 541 - * during powerdomain transitions. If this bit is set, it 542 - * indicates that the chip does support OS-level control of this 543 - * feature. 544 - */ 545 - extern u32 omap_features; 546 - 547 - #define OMAP3_HAS_L2CACHE BIT(0) 548 - #define OMAP3_HAS_IVA BIT(1) 549 - #define OMAP3_HAS_SGX BIT(2) 550 - #define OMAP3_HAS_NEON BIT(3) 551 - #define OMAP3_HAS_ISP BIT(4) 552 - #define OMAP3_HAS_192MHZ_CLK BIT(5) 553 - #define OMAP3_HAS_IO_WAKEUP BIT(6) 554 - #define OMAP3_HAS_SDRC BIT(7) 555 - #define OMAP3_HAS_IO_CHAIN_CTRL BIT(8) 556 - #define OMAP4_HAS_MPU_1GHZ BIT(9) 557 - #define OMAP4_HAS_MPU_1_2GHZ BIT(10) 558 - #define OMAP4_HAS_MPU_1_5GHZ BIT(11) 559 - 560 - 561 - #define OMAP3_HAS_FEATURE(feat,flag) \ 562 - static inline unsigned int omap3_has_ ##feat(void) \ 563 - { \ 564 - return omap_features & OMAP3_HAS_ ##flag; \ 565 - } \ 566 - 567 - OMAP3_HAS_FEATURE(l2cache, L2CACHE) 568 - OMAP3_HAS_FEATURE(sgx, SGX) 569 - OMAP3_HAS_FEATURE(iva, IVA) 570 - OMAP3_HAS_FEATURE(neon, NEON) 571 - OMAP3_HAS_FEATURE(isp, ISP) 572 - OMAP3_HAS_FEATURE(192mhz_clk, 192MHZ_CLK) 573 - OMAP3_HAS_FEATURE(io_wakeup, IO_WAKEUP) 574 - OMAP3_HAS_FEATURE(sdrc, SDRC) 575 - OMAP3_HAS_FEATURE(io_chain_ctrl, IO_CHAIN_CTRL) 576 - 577 - /* 578 - * Runtime detection of OMAP4 features 579 - */ 580 - #define OMAP4_HAS_FEATURE(feat, flag) \ 581 - static inline unsigned int omap4_has_ ##feat(void) \ 582 - { \ 583 - return omap_features & OMAP4_HAS_ ##flag; \ 584 - } \ 585 - 586 - OMAP4_HAS_FEATURE(mpu_1ghz, MPU_1GHZ) 587 - OMAP4_HAS_FEATURE(mpu_1_2ghz, MPU_1_2GHZ) 588 - OMAP4_HAS_FEATURE(mpu_1_5ghz, MPU_1_5GHZ) 589 - 590 - #endif /* __ASSEMBLY__ */ 591 41 #endif
+2 -1
arch/arm/plat-omap/sram.c
··· 25 25 26 26 #include <asm/mach/map.h> 27 27 28 - #include <plat/cpu.h> 28 + #include "../mach-omap1/soc.h" 29 + #include "../mach-omap2/soc.h" 29 30 30 31 #include "sram.h" 31 32