···11+/*22+ * Code for TI8168 EVM.33+ *44+ * Copyright (C) 2010 Texas Instruments, Inc. - http://www.ti.com/55+ *66+ * This program is free software; you can redistribute it and/or77+ * modify it under the terms of the GNU General Public License as88+ * published by the Free Software Foundation version 2.99+ *1010+ * This program is distributed "as is" WITHOUT ANY WARRANTY of any1111+ * kind, whether express or implied; without even the implied warranty1212+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the1313+ * GNU General Public License for more details.1414+ */1515+#include <linux/kernel.h>1616+#include <linux/init.h>1717+1818+#include <mach/hardware.h>1919+#include <asm/mach-types.h>2020+#include <asm/mach/arch.h>2121+#include <asm/mach/map.h>2222+2323+#include <plat/irqs.h>2424+#include <plat/board.h>2525+#include <plat/common.h>2626+2727+static struct omap_board_config_kernel ti8168_evm_config[] __initdata = {2828+};2929+3030+static void __init ti8168_init_early(void)3131+{3232+ omap_board_config = ti8168_evm_config;3333+ omap_board_config_size = ARRAY_SIZE(ti8168_evm_config);3434+ omap2_init_common_infrastructure();3535+ omap2_init_common_devices(NULL, NULL);3636+}3737+3838+static void __init ti8168_evm_init_irq(void)3939+{4040+ omap_init_irq();4141+}4242+4343+static void __init ti8168_evm_init(void)4444+{4545+ omap_serial_init();4646+}4747+4848+static void __init ti8168_evm_map_io(void)4949+{5050+ omap2_set_globals_ti816x();5151+ omapti816x_map_common_io();5252+}5353+5454+MACHINE_START(TI8168EVM, "ti8168evm")5555+ /* Maintainer: Texas Instruments */5656+ .boot_params = 0x80000100,5757+ .map_io = ti8168_evm_map_io,5858+ .init_early = ti8168_init_early,5959+ .init_irq = ti8168_evm_init_irq,6060+ .timer = &omap_timer,6161+ .init_machine = ti8168_evm_init,6262+MACHINE_END
···40404141#endif42424343-#if defined(CONFIG_ARCH_OMAP2420)4343+#if defined(CONFIG_SOC_OMAP2420)44444545static struct omap_globals omap242x_globals = {4646 .class = OMAP242X_CLASS,···6161}6262#endif63636464-#if defined(CONFIG_ARCH_OMAP2430)6464+#if defined(CONFIG_SOC_OMAP2430)65656666static struct omap_globals omap243x_globals = {6767 .class = OMAP243X_CLASS,···107107{108108 omap2_set_globals_3xxx();109109 omap34xx_map_common_io();110110+}111111+112112+/*113113+ * Adjust TAP register base such that omap3_check_revision accesses the correct114114+ * TI816X register for checking device ID (it adds 0x204 to tap base while115115+ * TI816X DEVICE ID register is at offset 0x600 from control base).116116+ */117117+#define TI816X_TAP_BASE (TI816X_CTRL_BASE + \118118+ TI816X_CONTROL_DEVICE_ID - 0x204)119119+120120+static struct omap_globals ti816x_globals = {121121+ .class = OMAP343X_CLASS,122122+ .tap = OMAP2_L4_IO_ADDRESS(TI816X_TAP_BASE),123123+ .ctrl = TI816X_CTRL_BASE,124124+ .prm = TI816X_PRCM_BASE,125125+ .cm = TI816X_PRCM_BASE,126126+};127127+128128+void __init omap2_set_globals_ti816x(void)129129+{130130+ __omap2_set_globals(&ti816x_globals);110131}111132#endif112133
+6
arch/arm/mach-omap2/control.h
···5252#define OMAP343X_CONTROL_PADCONFS_WKUP 0xa005353#define OMAP343X_CONTROL_GENERAL_WKUP 0xa6054545555+/* TI816X spefic control submodules */5656+#define TI816X_CONTROL_DEVCONF 0x6005757+5558/* Control register offsets - read/write with omap_ctrl_{read,write}{bwl}() */56595760#define OMAP2_CONTROL_SYSCONFIG (OMAP2_CONTROL_INTERFACE + 0x10)···243240/* 34xx D2D idle-related pins, handled by PM core */244241#define OMAP3_PADCONF_SAD2D_MSTANDBY 0x250245242#define OMAP3_PADCONF_SAD2D_IDLEACK 0x254243243+244244+/* TI816X CONTROL_DEVCONF register offsets */245245+#define TI816X_CONTROL_DEVICE_ID (TI816X_CONTROL_DEVCONF + 0x000)246246247247/*248248 * REVISIT: This list of registers is not comprehensive - there are more
···14671467 return -EEXIST;1468146814691469 ms_id = _find_mpu_port_index(oh);14701470- if (!IS_ERR_VALUE(ms_id)) {14701470+ if (!IS_ERR_VALUE(ms_id))14711471 oh->_mpu_port_index = ms_id;14721472- oh->_mpu_rt_va = _find_mpu_rt_base(oh, oh->_mpu_port_index);14731473- } else {14721472+ else14741473 oh->_int_flags |= _HWMOD_NO_MPU_PORT;14751475- }1476147414771475 list_add_tail(&oh->node, &omap_hwmod_list);14781476···16191621 return 0;16201622}1621162316241624+/*16251625+ * _populate_mpu_rt_base - populate the virtual address for a hwmod16261626+ *16271627+ * Must be called only from omap_hwmod_late_init so ioremap works properly.16281628+ * Assumes the caller takes care of locking if needed.16291629+ *16301630+ */16311631+static int __init _populate_mpu_rt_base(struct omap_hwmod *oh, void *data)16321632+{16331633+ if (oh->_int_flags & _HWMOD_NO_MPU_PORT)16341634+ return 0;16351635+16361636+ oh->_mpu_rt_va = _find_mpu_rt_base(oh, oh->_mpu_port_index);16371637+ if (!oh->_mpu_rt_va)16381638+ pr_warning("omap_hwmod: %s found no _mpu_rt_va for %s\n",16391639+ __func__, oh->name);16401640+16411641+ return 0;16421642+}16431643+16221644/**16231645 * omap_hwmod_late_init - do some post-clock framework initialization16241646 *···16461628 * to struct clk pointers for each registered omap_hwmod. Also calls16471629 * _setup() on each hwmod. Returns 0.16481630 */16491649-int omap_hwmod_late_init(void)16311631+static int __init omap_hwmod_late_init(void)16501632{16511633 int r;16341634+16351635+ r = omap_hwmod_for_each(_populate_mpu_rt_base, NULL);1652163616531637 /* XXX check return value */16541638 r = omap_hwmod_for_each(_init_clocks, NULL);···1664164416651645 return 0;16661646}16471647+core_initcall(omap_hwmod_late_init);1667164816681649/**16691650 * omap_hwmod_enable - enable an omap_hwmod
···7878 * 2430-specific powerdomains7979 */80808181-#ifdef CONFIG_ARCH_OMAP24308181+#ifdef CONFIG_SOC_OMAP243082828383/* XXX 2430 KILLDOMAINWKUP bit? No current users apparently */8484···9797 },9898};9999100100-#endif /* CONFIG_ARCH_OMAP2430 */100100+#endif /* CONFIG_SOC_OMAP2430 */101101102102/* As powerdomains are added or removed above, this list must also be changed */103103static struct powerdomain *powerdomains_omap2xxx[] __initdata = {···111111 &core_24xx_pwrdm,112112#endif113113114114-#ifdef CONFIG_ARCH_OMAP2430114114+#ifdef CONFIG_SOC_OMAP2430115115 &mdm_pwrdm,116116#endif117117 NULL
+4-1
arch/arm/mach-omap2/prcm.c
···2424#include <linux/io.h>2525#include <linux/delay.h>26262727+#include <mach/system.h>2728#include <plat/common.h>2829#include <plat/prcm.h>2930#include <plat/irqs.h>···5857EXPORT_SYMBOL(omap_prcm_get_reset_sources);59586059/* Resets clock rates and reboots the system. Only called from system.h */6161-void omap_prcm_arch_reset(char mode, const char *cmd)6060+static void omap_prcm_arch_reset(char mode, const char *cmd)6261{6362 s16 prcm_offs = 0;6463···108107 OMAP2_RM_RSTCTRL);109108 omap2_prm_read_mod_reg(prcm_offs, OMAP2_RM_RSTCTRL); /* OCP barrier */110109}110110+111111+void (*arch_reset)(char, const char *) = omap_prcm_arch_reset;111112112113/**113114 * omap2_cm_wait_idlest - wait for IDLEST bit to indicate module readiness
+9-6
arch/arm/mach-omap2/serial.c
···486486 mod_timer(&uart->timer, jiffies + uart->timeout);487487 omap_uart_smart_idle_enable(uart, 0);488488489489- if (cpu_is_omap34xx()) {489489+ if (cpu_is_omap34xx() && !cpu_is_ti816x()) {490490 u32 mod = (uart->num > 1) ? OMAP3430_PER_MOD : CORE_MOD;491491 u32 wk_mask = 0;492492 u32 padconf = 0;···655655}656656#endif657657658658-void __init omap_serial_early_init(void)658658+static int __init omap_serial_early_init(void)659659{660660 int i = 0;661661···672672673673 uart = kzalloc(sizeof(struct omap_uart_state), GFP_KERNEL);674674 if (WARN_ON(!uart))675675- return;675675+ return -ENODEV;676676677677 uart->oh = oh;678678 uart->num = i++;···691691 */692692 uart->oh->flags |= HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET;693693 } while (1);694694+695695+ return 0;694696}697697+core_initcall(omap_serial_early_init);695698696699/**697700 * omap_serial_init_port() - initialize single serial port···762759 p->private_data = uart;763760764761 /*765765- * omap44xx: Never read empty UART fifo762762+ * omap44xx, ti816x: Never read empty UART fifo766763 * omap3xxx: Never read empty UART fifo on UARTs767764 * with IP rev >=0x52768765 */769766 uart->regshift = p->regshift;770767 uart->membase = p->membase;771771- if (cpu_is_omap44xx())768768+ if (cpu_is_omap44xx() || cpu_is_ti816x())772769 uart->errata |= UART_ERRATA_FIFO_FULL_ABORT;773770 else if ((serial_read_reg(uart, UART_OMAP_MVER) & 0xFF)774771 >= UART_OMAP_NO_EMPTY_FIFO_READ_IP_REV)···850847 }851848852849 /* Enable the MDR1 errata for OMAP3 */853853- if (cpu_is_omap34xx())850850+ if (cpu_is_omap34xx() && !cpu_is_ti816x())854851 uart->errata |= UART_ERRATA_i202_MDR1_ACCESS;855852}856853
···134134135135#ifdef CONFIG_ARCH_OMAP15XX136136/* Returns 1 if the DMA module is in OMAP1510-compatible mode, 0 otherwise */137137-int omap_dma_in_1510_mode(void)137137+static int omap_dma_in_1510_mode(void)138138{139139 return enable_1510_mode;140140}
+1-1
arch/arm/plat-omap/i2c.c
···112112}113113114114115115+#ifdef CONFIG_ARCH_OMAP2PLUS115116/*116117 * XXX This function is a temporary compatibility wrapper - only117118 * needed until the I2C driver can be converted to call···131130 },132131};133132134134-#ifdef CONFIG_ARCH_OMAP2PLUS135133static inline int omap2_i2c_add_bus(int bus_id)136134{137135 int l;
···6666void omap2_set_globals_243x(void);6767void omap2_set_globals_3xxx(void);6868void omap2_set_globals_443x(void);6969+void omap2_set_globals_ti816x(void);69707071/* These get called from omap2_set_globals_xxxx(), do not call these */7172void omap2_set_globals_tap(struct omap_globals *);
···11+/*22+ * This file contains the address data for various TI816X modules.33+ *44+ * Copyright (C) 2010 Texas Instruments, Inc. - http://www.ti.com/55+ *66+ * This program is free software; you can redistribute it and/or77+ * modify it under the terms of the GNU General Public License as88+ * published by the Free Software Foundation version 2.99+ *1010+ * This program is distributed "as is" WITHOUT ANY WARRANTY of any1111+ * kind, whether express or implied; without even the implied warranty1212+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the1313+ * GNU General Public License for more details.1414+ */1515+1616+#ifndef __ASM_ARCH_TI816X_H1717+#define __ASM_ARCH_TI816X_H1818+1919+#define L4_SLOW_TI816X_BASE 0x480000002020+2121+#define TI816X_SCM_BASE 0x481400002222+#define TI816X_CTRL_BASE TI816X_SCM_BASE2323+#define TI816X_PRCM_BASE 0x481800002424+2525+#define TI816X_ARM_INTC_BASE 0x482000002626+2727+#endif /* __ASM_ARCH_TI816X_H */
+7
arch/arm/plat-omap/include/plat/uncompress.h
···9393#define DEBUG_LL_ZOOM(mach) \9494 _DEBUG_LL_ENTRY(mach, ZOOM_UART_BASE, ZOOM_PORT_SHIFT, ZOOM_UART)95959696+#define DEBUG_LL_TI816X(p, mach) \9797+ _DEBUG_LL_ENTRY(mach, TI816X_UART##p##_BASE, OMAP_PORT_SHIFT, \9898+ TI816XUART##p)9999+96100static inline void __arch_decomp_setup(unsigned long arch_id)97101{98102 int port = 0;···169165 /* zoom2/3 external uart */170166 DEBUG_LL_ZOOM(omap_zoom2);171167 DEBUG_LL_ZOOM(omap_zoom3);168168+169169+ /* TI8168 base boards using UART3 */170170+ DEBUG_LL_TI816X(3, ti8168evm);172171173172 } while (0);174173}
+4-1
arch/arm/plat-omap/io.c
···8585 }8686#endif8787#ifdef CONFIG_ARCH_OMAP38888- if (cpu_is_omap34xx()) {8888+ if (cpu_is_ti816x()) {8989+ if (BETWEEN(p, L4_34XX_PHYS, L4_34XX_SIZE))9090+ return XLATE(p, L4_34XX_PHYS, L4_34XX_VIRT);9191+ } else if (cpu_is_omap34xx()) {8992 if (BETWEEN(p, L3_34XX_PHYS, L3_34XX_SIZE))9093 return XLATE(p, L3_34XX_PHYS, L3_34XX_VIRT);9194 if (BETWEEN(p, L4_34XX_PHYS, L4_34XX_SIZE))
+2-2
arch/arm/plat-omap/sram.c
···312312}313313#endif314314315315-#ifdef CONFIG_ARCH_OMAP2420315315+#ifdef CONFIG_SOC_OMAP2420316316static int __init omap242x_sram_init(void)317317{318318 _omap2_sram_ddr_init = omap_sram_push(omap242x_sram_ddr_init,···333333}334334#endif335335336336-#ifdef CONFIG_ARCH_OMAP2430336336+#ifdef CONFIG_SOC_OMAP2430337337static int __init omap243x_sram_init(void)338338{339339 _omap2_sram_ddr_init = omap_sram_push(omap243x_sram_ddr_init,
+1-1
drivers/mmc/host/Kconfig
···225225226226config MMC_OMAP_HS227227 tristate "TI OMAP High Speed Multimedia Card Interface support"228228- depends on ARCH_OMAP2430 || ARCH_OMAP3 || ARCH_OMAP4228228+ depends on SOC_OMAP2430 || ARCH_OMAP3 || ARCH_OMAP4229229 help230230 This selects the TI OMAP High Speed Multimedia card Interface.231231 If you have an OMAP2430 or OMAP3 board or OMAP4 board with a
···1510151015111511/*-------------------------------------------------------------------------*/1512151215131513-static int __init15131513+static int __devinit15141514isp1301_probe(struct i2c_client *i2c, const struct i2c_device_id *id)15151515{15161516 int status;
+1-1
drivers/w1/masters/Kconfig
···60606161config HDQ_MASTER_OMAP6262 tristate "OMAP HDQ driver"6363- depends on ARCH_OMAP2430 || ARCH_OMAP36363+ depends on SOC_OMAP2430 || ARCH_OMAP36464 help6565 Say Y here if you want support for the 1-wire or HDQ Interface6666 on an OMAP processor.