forked from Minki/linux
We have had omap3517 booting in device tree mode for quite some
time now and we have at least a minimal dts file for the 3517 based boards. Also almost all the drivers are usable in device tree mode. And if there are any drivers not yet supported in device tree mode, those can be enabled using pdata quirks. This leaves omap3430 to omap3730 as the only remaining mach-omap2 platforms still booting in legacy mode also. For those were are printing a warning during the boot to get people to update their systems to boot in device tree mode and slowly converting them over to device tree based booting. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAABAgAGBQJUvonzAAoJEBvUPslcq6VzJhUP/jGWiqIod61LIbt9AEeSiava IVkgXiF5524+YybCUXzOEDQsvAnrm6G7uL/ur+vKOH5ycVMuuFnxp4RbfOxPJk6f bGF5JwRs9olQ2As5jcS3SKMLP7O4479fbUvwhUxSVLRZvzbVUXBkauSD19K7O1mW nd/n+0yMbPPP7/V9DC0g2zEsLAl+7zJJYjFfUera9FQjVQ4x9RmmHU/tRPE0gQLp nNtZZgBCjXqIi166MeThPamXL7xlmykI2R8kvTWeCMqenGYwGYPqoBFpTQX5APpA xWUp2h1mwd1rFZdNsAZ4YSfWm+5u6VKTVBlS8FFTp+IM1BmicdNiLkHaVC6zJO0s o4+V6p3aa2yCTFT/ZAVOp4+0jsN8R9ATbdYU8dyAUtYiLMIv1U6TdDhaBLN98r9f vX1T7wmL9gfKxpDwS+D4FksLxk/OQ1SX+0jqlaLMoChUWjK6kyx2PxMMLzyK/C++ bP/FOGt1QDe5mci1O1QxeoO3hHqbpFDb529LAB6dC51EnMJQiUJOew3xAY5K6HOq h333PSbj7ZMjK5wVM0COfIb+p/jloG3ga5RCe4E8Es/PuVPx/XRs4piezDkdERuh KZEMvIEq+PGmuPl12lXeu7EnziRDwHORgXuKv5/pXAxeW/2VD+STZIzELp+sFQvB YBlyjReQVKLH3kWvXLMn =unh4 -----END PGP SIGNATURE----- Merge tag 'omap-for-v3.20/drop-legacy-3517-v2' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap into next/cleanup Merge "drop legacy booting for omap3517" from Tony Lindgren: We have had omap3517 booting in device tree mode for quite some time now and we have at least a minimal dts file for the 3517 based boards. Also almost all the drivers are usable in device tree mode. And if there are any drivers not yet supported in device tree mode, those can be enabled using pdata quirks. This leaves omap3430 to omap3730 as the only remaining mach-omap2 platforms still booting in legacy mode also. For those were are printing a warning during the boot to get people to update their systems to boot in device tree mode and slowly converting them over to device tree based booting. * tag 'omap-for-v3.20/drop-legacy-3517-v2' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap: ARM: OMAP3: Add back Kconfig option MACH_OMAP3517EVM for ASoC ARM: OMAP3: Remove legacy support for am35xx-emac ARM: OMAP3: Remove cm-t3517 legacy support ARM: OMAP3: Remove legacy support for am3517crane ARM: OMAP3: Remove legacy support for am3517-evm Signed-off-by: Olof Johansson <olof@lixom.net>
This commit is contained in:
commit
03773a4c17
@ -217,12 +217,6 @@ config MACH_OMAP3517EVM
|
||||
bool "OMAP3517/ AM3517 EVM board"
|
||||
depends on ARCH_OMAP3
|
||||
default y
|
||||
select OMAP_PACKAGE_CBB
|
||||
|
||||
config MACH_CRANEBOARD
|
||||
bool "AM3517/05 CRANE board"
|
||||
depends on ARCH_OMAP3
|
||||
select OMAP_PACKAGE_CBB
|
||||
|
||||
config MACH_OMAP3_PANDORA
|
||||
bool "OMAP3 Pandora"
|
||||
@ -263,12 +257,6 @@ config MACH_CM_T35
|
||||
select MACH_CM_T3730
|
||||
select OMAP_PACKAGE_CUS
|
||||
|
||||
config MACH_CM_T3517
|
||||
bool "CompuLab CM-T3517 module"
|
||||
depends on ARCH_OMAP3
|
||||
default y
|
||||
select OMAP_PACKAGE_CBB
|
||||
|
||||
config MACH_CM_T3730
|
||||
bool
|
||||
|
||||
|
@ -249,13 +249,8 @@ obj-$(CONFIG_MACH_NOKIA_RX51) += board-rx51.o sdram-nokia.o
|
||||
obj-$(CONFIG_MACH_NOKIA_RX51) += board-rx51-peripherals.o
|
||||
obj-$(CONFIG_MACH_NOKIA_RX51) += board-rx51-video.o
|
||||
obj-$(CONFIG_MACH_CM_T35) += board-cm-t35.o
|
||||
obj-$(CONFIG_MACH_CM_T3517) += board-cm-t3517.o
|
||||
obj-$(CONFIG_MACH_TOUCHBOOK) += board-omap3touchbook.o
|
||||
|
||||
obj-$(CONFIG_MACH_OMAP3517EVM) += board-am3517evm.o
|
||||
|
||||
obj-$(CONFIG_MACH_CRANEBOARD) += board-am3517crane.o
|
||||
|
||||
obj-$(CONFIG_MACH_SBC3530) += board-omap3stalker.o
|
||||
|
||||
# Platform specific device init code
|
||||
@ -285,7 +280,4 @@ ifneq ($(CONFIG_HWSPINLOCK_OMAP),)
|
||||
obj-y += hwspinlock.o
|
||||
endif
|
||||
|
||||
emac-$(CONFIG_TI_DAVINCI_EMAC) := am35xx-emac.o
|
||||
obj-y += $(emac-m) $(emac-y)
|
||||
|
||||
obj-y += common-board-devices.o twl-common.o dss-common.o
|
||||
|
@ -1,114 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2011 Ilya Yanok, Emcraft Systems
|
||||
*
|
||||
* Based on mach-omap2/board-am3517evm.c
|
||||
* Copyright (C) 2009 Texas Instruments Incorporated
|
||||
* Author: Ranjith Lohithakshan <ranjithl@ti.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed "as is" WITHOUT ANY WARRANTY of any kind,
|
||||
* whether express or implied; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*/
|
||||
|
||||
#include <linux/err.h>
|
||||
#include <linux/davinci_emac.h>
|
||||
#include "omap_device.h"
|
||||
#include "am35xx.h"
|
||||
#include "control.h"
|
||||
#include "am35xx-emac.h"
|
||||
|
||||
static void am35xx_enable_emac_int(void)
|
||||
{
|
||||
u32 v;
|
||||
|
||||
v = omap_ctrl_readl(AM35XX_CONTROL_LVL_INTR_CLEAR);
|
||||
v |= (AM35XX_CPGMAC_C0_RX_PULSE_CLR | AM35XX_CPGMAC_C0_TX_PULSE_CLR |
|
||||
AM35XX_CPGMAC_C0_MISC_PULSE_CLR | AM35XX_CPGMAC_C0_RX_THRESH_CLR);
|
||||
omap_ctrl_writel(v, AM35XX_CONTROL_LVL_INTR_CLEAR);
|
||||
omap_ctrl_readl(AM35XX_CONTROL_LVL_INTR_CLEAR); /* OCP barrier */
|
||||
}
|
||||
|
||||
static void am35xx_disable_emac_int(void)
|
||||
{
|
||||
u32 v;
|
||||
|
||||
v = omap_ctrl_readl(AM35XX_CONTROL_LVL_INTR_CLEAR);
|
||||
v |= (AM35XX_CPGMAC_C0_RX_PULSE_CLR | AM35XX_CPGMAC_C0_TX_PULSE_CLR);
|
||||
omap_ctrl_writel(v, AM35XX_CONTROL_LVL_INTR_CLEAR);
|
||||
omap_ctrl_readl(AM35XX_CONTROL_LVL_INTR_CLEAR); /* OCP barrier */
|
||||
}
|
||||
|
||||
static struct emac_platform_data am35xx_emac_pdata = {
|
||||
.ctrl_reg_offset = AM35XX_EMAC_CNTRL_OFFSET,
|
||||
.ctrl_mod_reg_offset = AM35XX_EMAC_CNTRL_MOD_OFFSET,
|
||||
.ctrl_ram_offset = AM35XX_EMAC_CNTRL_RAM_OFFSET,
|
||||
.ctrl_ram_size = AM35XX_EMAC_CNTRL_RAM_SIZE,
|
||||
.hw_ram_addr = AM35XX_EMAC_HW_RAM_ADDR,
|
||||
.version = EMAC_VERSION_2,
|
||||
.interrupt_enable = am35xx_enable_emac_int,
|
||||
.interrupt_disable = am35xx_disable_emac_int,
|
||||
};
|
||||
|
||||
static struct mdio_platform_data am35xx_mdio_pdata;
|
||||
|
||||
static int __init omap_davinci_emac_dev_init(struct omap_hwmod *oh,
|
||||
void *pdata, int pdata_len)
|
||||
{
|
||||
struct platform_device *pdev;
|
||||
|
||||
pdev = omap_device_build(oh->class->name, 0, oh, pdata, pdata_len);
|
||||
if (IS_ERR(pdev)) {
|
||||
WARN(1, "Can't build omap_device for %s:%s.\n",
|
||||
oh->class->name, oh->name);
|
||||
return PTR_ERR(pdev);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void __init am35xx_emac_init(unsigned long mdio_bus_freq, u8 rmii_en)
|
||||
{
|
||||
struct omap_hwmod *oh;
|
||||
u32 v;
|
||||
int ret;
|
||||
|
||||
oh = omap_hwmod_lookup("davinci_mdio");
|
||||
if (!oh) {
|
||||
pr_err("Could not find davinci_mdio hwmod\n");
|
||||
return;
|
||||
}
|
||||
|
||||
am35xx_mdio_pdata.bus_freq = mdio_bus_freq;
|
||||
|
||||
ret = omap_davinci_emac_dev_init(oh, &am35xx_mdio_pdata,
|
||||
sizeof(am35xx_mdio_pdata));
|
||||
if (ret) {
|
||||
pr_err("Could not build davinci_mdio hwmod device\n");
|
||||
return;
|
||||
}
|
||||
|
||||
oh = omap_hwmod_lookup("davinci_emac");
|
||||
if (!oh) {
|
||||
pr_err("Could not find davinci_emac hwmod\n");
|
||||
return;
|
||||
}
|
||||
|
||||
am35xx_emac_pdata.rmii_en = rmii_en;
|
||||
|
||||
ret = omap_davinci_emac_dev_init(oh, &am35xx_emac_pdata,
|
||||
sizeof(am35xx_emac_pdata));
|
||||
if (ret) {
|
||||
pr_err("Could not build davinci_emac hwmod device\n");
|
||||
return;
|
||||
}
|
||||
|
||||
v = omap_ctrl_readl(AM35XX_CONTROL_IP_SW_RESET);
|
||||
v &= ~AM35XX_CPGMACSS_SW_RST;
|
||||
omap_ctrl_writel(v, AM35XX_CONTROL_IP_SW_RESET);
|
||||
omap_ctrl_readl(AM35XX_CONTROL_IP_SW_RESET); /* OCP barrier */
|
||||
}
|
@ -1,15 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2011 Ilya Yanok, Emcraft Systems
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#define AM35XX_DEFAULT_MDIO_FREQUENCY 1000000
|
||||
|
||||
#if defined(CONFIG_TI_DAVINCI_EMAC) || defined(CONFIG_TI_DAVINCI_EMAC_MODULE)
|
||||
void am35xx_emac_init(unsigned long mdio_bus_freq, u8 rmii_en);
|
||||
#else
|
||||
static inline void am35xx_emac_init(unsigned long mdio_bus_freq, u8 rmii_en) {}
|
||||
#endif
|
@ -1,46 +0,0 @@
|
||||
/*:
|
||||
* Address mappings and base address for AM35XX specific interconnects
|
||||
* and peripherals.
|
||||
*
|
||||
* Copyright (C) 2009 Texas Instruments
|
||||
*
|
||||
* Author: Sriramakrishnan <srk@ti.com>
|
||||
* Vaibhav Hiremath <hvaibhav@ti.com>
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
#ifndef __ASM_ARCH_AM35XX_H
|
||||
#define __ASM_ARCH_AM35XX_H
|
||||
|
||||
/*
|
||||
* Base addresses
|
||||
* Note: OMAP3430 IVA2 memory space is being used for AM35xx IPSS modules
|
||||
*/
|
||||
#define AM35XX_IPSS_EMAC_BASE 0x5C000000
|
||||
#define AM35XX_IPSS_USBOTGSS_BASE 0x5C040000
|
||||
#define AM35XX_IPSS_HECC_BASE 0x5C050000
|
||||
#define AM35XX_IPSS_VPFE_BASE 0x5C060000
|
||||
|
||||
|
||||
/* HECC module specifc offset definitions */
|
||||
#define AM35XX_HECC_SCC_HECC_OFFSET (0x0)
|
||||
#define AM35XX_HECC_SCC_RAM_OFFSET (0x3000)
|
||||
#define AM35XX_HECC_RAM_OFFSET (0x3000)
|
||||
#define AM35XX_HECC_MBOX_OFFSET (0x2000)
|
||||
#define AM35XX_HECC_INT_LINE (0x0)
|
||||
#define AM35XX_HECC_VERSION (0x1)
|
||||
|
||||
#define AM35XX_EMAC_CNTRL_OFFSET (0x10000)
|
||||
#define AM35XX_EMAC_CNTRL_MOD_OFFSET (0x0)
|
||||
#define AM35XX_EMAC_CNTRL_RAM_OFFSET (0x20000)
|
||||
#define AM35XX_EMAC_MDIO_OFFSET (0x30000)
|
||||
#define AM35XX_IPSS_MDIO_BASE (AM35XX_IPSS_EMAC_BASE + \
|
||||
AM35XX_EMAC_MDIO_OFFSET)
|
||||
#define AM35XX_EMAC_CNTRL_RAM_SIZE (0x2000)
|
||||
#define AM35XX_EMAC_RAM_ADDR (AM3517_EMAC_BASE + \
|
||||
AM3517_EMAC_CNTRL_RAM_OFFSET)
|
||||
#define AM35XX_EMAC_HW_RAM_ADDR (0x01E20000)
|
||||
|
||||
#endif /* __ASM_ARCH_AM35XX_H */
|
@ -1,150 +0,0 @@
|
||||
/*
|
||||
* Support for AM3517/05 Craneboard
|
||||
* http://www.mistralsolutions.com/products/craneboard.php
|
||||
*
|
||||
* Copyright (C) 2010 Mistral Solutions Pvt Ltd. <www.mistralsolutions.com>
|
||||
* Author: R.Srinath <srinath@mistralsolutions.com>
|
||||
*
|
||||
* Based on mach-omap2/board-am3517evm.c
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation version 2.
|
||||
*
|
||||
* This program is distributed "as is" WITHOUT ANY WARRANTY of any kind,
|
||||
* whether express or implied; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*/
|
||||
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/gpio.h>
|
||||
#include <linux/mfd/tps65910.h>
|
||||
#include <linux/mtd/mtd.h>
|
||||
#include <linux/mtd/nand.h>
|
||||
#include <linux/mtd/partitions.h>
|
||||
#include <linux/omap-gpmc.h>
|
||||
|
||||
#include <asm/mach-types.h>
|
||||
#include <asm/mach/arch.h>
|
||||
#include <asm/mach/map.h>
|
||||
|
||||
#include "common.h"
|
||||
#include "common-board-devices.h"
|
||||
#include "board-flash.h"
|
||||
|
||||
#include "am35xx-emac.h"
|
||||
#include "mux.h"
|
||||
#include "control.h"
|
||||
|
||||
#define GPIO_USB_POWER 35
|
||||
#define GPIO_USB_NRESET 38
|
||||
|
||||
#ifdef CONFIG_OMAP_MUX
|
||||
static struct omap_board_mux board_mux[] __initdata = {
|
||||
OMAP3_MUX(SYS_NIRQ, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLUP),
|
||||
{ .reg_offset = OMAP_MUX_TERMINATOR },
|
||||
};
|
||||
#endif
|
||||
|
||||
static struct usbhs_phy_data phy_data[] __initdata = {
|
||||
{
|
||||
.port = 1,
|
||||
.reset_gpio = GPIO_USB_NRESET,
|
||||
.vcc_gpio = GPIO_USB_POWER,
|
||||
.vcc_polarity = 1,
|
||||
},
|
||||
};
|
||||
|
||||
static struct usbhs_omap_platform_data usbhs_bdata __initdata = {
|
||||
.port_mode[0] = OMAP_EHCI_PORT_MODE_PHY,
|
||||
};
|
||||
|
||||
static struct mtd_partition crane_nand_partitions[] = {
|
||||
{
|
||||
.name = "X-Loader",
|
||||
.offset = 0,
|
||||
.size = 4 * NAND_BLOCK_SIZE,
|
||||
.mask_flags = MTD_WRITEABLE,
|
||||
},
|
||||
{
|
||||
.name = "U-Boot",
|
||||
.offset = MTDPART_OFS_APPEND,
|
||||
.size = 14 * NAND_BLOCK_SIZE,
|
||||
.mask_flags = MTD_WRITEABLE,
|
||||
},
|
||||
{
|
||||
.name = "U-Boot Env",
|
||||
.offset = MTDPART_OFS_APPEND,
|
||||
.size = 2 * NAND_BLOCK_SIZE,
|
||||
},
|
||||
{
|
||||
.name = "Kernel",
|
||||
.offset = MTDPART_OFS_APPEND,
|
||||
.size = 40 * NAND_BLOCK_SIZE,
|
||||
},
|
||||
{
|
||||
.name = "File System",
|
||||
.offset = MTDPART_OFS_APPEND,
|
||||
.size = MTDPART_SIZ_FULL,
|
||||
},
|
||||
};
|
||||
|
||||
static struct tps65910_board tps65910_pdata = {
|
||||
.irq = 7 + OMAP_INTC_START,
|
||||
.en_ck32k_xtal = true,
|
||||
};
|
||||
|
||||
static struct i2c_board_info __initdata tps65910_board_info[] = {
|
||||
{
|
||||
I2C_BOARD_INFO("tps65910", 0x2d),
|
||||
.platform_data = &tps65910_pdata,
|
||||
},
|
||||
};
|
||||
|
||||
static void __init am3517_crane_i2c_init(void)
|
||||
{
|
||||
omap_register_i2c_bus(1, 2600, tps65910_board_info,
|
||||
ARRAY_SIZE(tps65910_board_info));
|
||||
}
|
||||
|
||||
static void __init am3517_crane_init(void)
|
||||
{
|
||||
omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
|
||||
omap_serial_init();
|
||||
omap_sdrc_init(NULL, NULL);
|
||||
board_nand_init(crane_nand_partitions,
|
||||
ARRAY_SIZE(crane_nand_partitions), 0,
|
||||
NAND_BUSWIDTH_16, NULL);
|
||||
am3517_crane_i2c_init();
|
||||
|
||||
/* Configure GPIO for EHCI port */
|
||||
if (omap_mux_init_gpio(GPIO_USB_NRESET, OMAP_PIN_OUTPUT)) {
|
||||
pr_err("Can not configure mux for GPIO_USB_NRESET %d\n",
|
||||
GPIO_USB_NRESET);
|
||||
return;
|
||||
}
|
||||
|
||||
if (omap_mux_init_gpio(GPIO_USB_POWER, OMAP_PIN_OUTPUT)) {
|
||||
pr_err("Can not configure mux for GPIO_USB_POWER %d\n",
|
||||
GPIO_USB_POWER);
|
||||
return;
|
||||
}
|
||||
|
||||
usbhs_init_phys(phy_data, ARRAY_SIZE(phy_data));
|
||||
usbhs_init(&usbhs_bdata);
|
||||
am35xx_emac_init(AM35XX_DEFAULT_MDIO_FREQUENCY, 1);
|
||||
}
|
||||
|
||||
MACHINE_START(CRANEBOARD, "AM3517/05 CRANEBOARD")
|
||||
.atag_offset = 0x100,
|
||||
.reserve = omap_reserve,
|
||||
.map_io = omap3_map_io,
|
||||
.init_early = am35xx_init_early,
|
||||
.init_irq = omap3_init_irq,
|
||||
.init_machine = am3517_crane_init,
|
||||
.init_late = am35xx_init_late,
|
||||
.init_time = omap3_sync32k_timer_init,
|
||||
.restart = omap3xxx_restart,
|
||||
MACHINE_END
|
@ -1,373 +0,0 @@
|
||||
/*
|
||||
* linux/arch/arm/mach-omap2/board-am3517evm.c
|
||||
*
|
||||
* Copyright (C) 2009 Texas Instruments Incorporated
|
||||
* Author: Ranjith Lohithakshan <ranjithl@ti.com>
|
||||
*
|
||||
* Based on mach-omap2/board-omap3evm.c
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation version 2.
|
||||
*
|
||||
* This program is distributed "as is" WITHOUT ANY WARRANTY of any kind,
|
||||
* whether express or implied; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*/
|
||||
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/clk.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/gpio.h>
|
||||
#include <linux/platform_data/pca953x.h>
|
||||
#include <linux/can/platform/ti_hecc.h>
|
||||
#include <linux/davinci_emac.h>
|
||||
#include <linux/mmc/host.h>
|
||||
#include <linux/usb/musb.h>
|
||||
#include <linux/platform_data/gpio-omap.h>
|
||||
|
||||
#include "am35xx.h"
|
||||
#include <asm/mach-types.h>
|
||||
#include <asm/mach/arch.h>
|
||||
#include <asm/mach/map.h>
|
||||
|
||||
#include "common.h"
|
||||
#include <video/omapdss.h>
|
||||
#include <video/omap-panel-data.h>
|
||||
|
||||
#include "am35xx-emac.h"
|
||||
#include "mux.h"
|
||||
#include "control.h"
|
||||
#include "hsmmc.h"
|
||||
|
||||
#define LCD_PANEL_PWR 176
|
||||
#define LCD_PANEL_BKLIGHT_PWR 182
|
||||
#define LCD_PANEL_PWM 181
|
||||
|
||||
static struct i2c_board_info __initdata am3517evm_i2c1_boardinfo[] = {
|
||||
{
|
||||
I2C_BOARD_INFO("s35390a", 0x30),
|
||||
},
|
||||
};
|
||||
|
||||
/*
|
||||
* RTC - S35390A
|
||||
*/
|
||||
#define GPIO_RTCS35390A_IRQ 55
|
||||
|
||||
static void __init am3517_evm_rtc_init(void)
|
||||
{
|
||||
int r;
|
||||
|
||||
omap_mux_init_gpio(GPIO_RTCS35390A_IRQ, OMAP_PIN_INPUT_PULLUP);
|
||||
|
||||
r = gpio_request_one(GPIO_RTCS35390A_IRQ, GPIOF_IN, "rtcs35390a-irq");
|
||||
if (r < 0) {
|
||||
printk(KERN_WARNING "failed to request GPIO#%d\n",
|
||||
GPIO_RTCS35390A_IRQ);
|
||||
return;
|
||||
}
|
||||
|
||||
am3517evm_i2c1_boardinfo[0].irq = gpio_to_irq(GPIO_RTCS35390A_IRQ);
|
||||
}
|
||||
|
||||
/*
|
||||
* I2C GPIO Expander - TCA6416
|
||||
*/
|
||||
|
||||
/* Mounted on Base-Board */
|
||||
static struct pca953x_platform_data am3517evm_gpio_expander_info_0 = {
|
||||
.gpio_base = OMAP_MAX_GPIO_LINES,
|
||||
};
|
||||
static struct i2c_board_info __initdata am3517evm_i2c2_boardinfo[] = {
|
||||
{
|
||||
I2C_BOARD_INFO("tlv320aic23", 0x1A),
|
||||
},
|
||||
{
|
||||
I2C_BOARD_INFO("tca6416", 0x21),
|
||||
.platform_data = &am3517evm_gpio_expander_info_0,
|
||||
},
|
||||
};
|
||||
|
||||
/* Mounted on UI Card */
|
||||
static struct pca953x_platform_data am3517evm_ui_gpio_expander_info_1 = {
|
||||
.gpio_base = OMAP_MAX_GPIO_LINES + 16,
|
||||
};
|
||||
static struct pca953x_platform_data am3517evm_ui_gpio_expander_info_2 = {
|
||||
.gpio_base = OMAP_MAX_GPIO_LINES + 32,
|
||||
};
|
||||
static struct i2c_board_info __initdata am3517evm_i2c3_boardinfo[] = {
|
||||
{
|
||||
I2C_BOARD_INFO("tca6416", 0x20),
|
||||
.platform_data = &am3517evm_ui_gpio_expander_info_1,
|
||||
},
|
||||
{
|
||||
I2C_BOARD_INFO("tca6416", 0x21),
|
||||
.platform_data = &am3517evm_ui_gpio_expander_info_2,
|
||||
},
|
||||
};
|
||||
|
||||
static int __init am3517_evm_i2c_init(void)
|
||||
{
|
||||
omap_register_i2c_bus(1, 400, NULL, 0);
|
||||
omap_register_i2c_bus(2, 400, am3517evm_i2c2_boardinfo,
|
||||
ARRAY_SIZE(am3517evm_i2c2_boardinfo));
|
||||
omap_register_i2c_bus(3, 400, am3517evm_i2c3_boardinfo,
|
||||
ARRAY_SIZE(am3517evm_i2c3_boardinfo));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct display_timing am3517_evm_lcd_videomode = {
|
||||
.pixelclock = { 0, 9000000, 0 },
|
||||
|
||||
.hactive = { 0, 480, 0 },
|
||||
.hfront_porch = { 0, 3, 0 },
|
||||
.hback_porch = { 0, 2, 0 },
|
||||
.hsync_len = { 0, 42, 0 },
|
||||
|
||||
.vactive = { 0, 272, 0 },
|
||||
.vfront_porch = { 0, 3, 0 },
|
||||
.vback_porch = { 0, 2, 0 },
|
||||
.vsync_len = { 0, 11, 0 },
|
||||
|
||||
.flags = DISPLAY_FLAGS_HSYNC_LOW | DISPLAY_FLAGS_VSYNC_LOW |
|
||||
DISPLAY_FLAGS_DE_LOW | DISPLAY_FLAGS_PIXDATA_POSEDGE,
|
||||
};
|
||||
|
||||
static struct panel_dpi_platform_data am3517_evm_lcd_pdata = {
|
||||
.name = "lcd",
|
||||
.source = "dpi.0",
|
||||
|
||||
.data_lines = 16,
|
||||
|
||||
.display_timing = &am3517_evm_lcd_videomode,
|
||||
|
||||
.enable_gpio = LCD_PANEL_PWR,
|
||||
.backlight_gpio = LCD_PANEL_BKLIGHT_PWR,
|
||||
};
|
||||
|
||||
static struct platform_device am3517_evm_lcd_device = {
|
||||
.name = "panel-dpi",
|
||||
.id = 0,
|
||||
.dev.platform_data = &am3517_evm_lcd_pdata,
|
||||
};
|
||||
|
||||
static struct connector_dvi_platform_data am3517_evm_dvi_connector_pdata = {
|
||||
.name = "dvi",
|
||||
.source = "tfp410.0",
|
||||
.i2c_bus_num = -1,
|
||||
};
|
||||
|
||||
static struct platform_device am3517_evm_dvi_connector_device = {
|
||||
.name = "connector-dvi",
|
||||
.id = 0,
|
||||
.dev.platform_data = &am3517_evm_dvi_connector_pdata,
|
||||
};
|
||||
|
||||
static struct encoder_tfp410_platform_data am3517_evm_tfp410_pdata = {
|
||||
.name = "tfp410.0",
|
||||
.source = "dpi.0",
|
||||
.data_lines = 24,
|
||||
.power_down_gpio = -1,
|
||||
};
|
||||
|
||||
static struct platform_device am3517_evm_tfp410_device = {
|
||||
.name = "tfp410",
|
||||
.id = 0,
|
||||
.dev.platform_data = &am3517_evm_tfp410_pdata,
|
||||
};
|
||||
|
||||
static struct connector_atv_platform_data am3517_evm_tv_pdata = {
|
||||
.name = "tv",
|
||||
.source = "venc.0",
|
||||
.connector_type = OMAP_DSS_VENC_TYPE_SVIDEO,
|
||||
.invert_polarity = false,
|
||||
};
|
||||
|
||||
static struct platform_device am3517_evm_tv_connector_device = {
|
||||
.name = "connector-analog-tv",
|
||||
.id = 0,
|
||||
.dev.platform_data = &am3517_evm_tv_pdata,
|
||||
};
|
||||
|
||||
static struct omap_dss_board_info am3517_evm_dss_data = {
|
||||
.default_display_name = "lcd",
|
||||
};
|
||||
|
||||
static void __init am3517_evm_display_init(void)
|
||||
{
|
||||
gpio_request_one(LCD_PANEL_PWM, GPIOF_OUT_INIT_HIGH, "lcd panel pwm");
|
||||
|
||||
omap_display_init(&am3517_evm_dss_data);
|
||||
|
||||
platform_device_register(&am3517_evm_tfp410_device);
|
||||
platform_device_register(&am3517_evm_dvi_connector_device);
|
||||
platform_device_register(&am3517_evm_lcd_device);
|
||||
platform_device_register(&am3517_evm_tv_connector_device);
|
||||
}
|
||||
|
||||
/*
|
||||
* Board initialization
|
||||
*/
|
||||
|
||||
static struct omap_musb_board_data musb_board_data = {
|
||||
.interface_type = MUSB_INTERFACE_ULPI,
|
||||
.mode = MUSB_OTG,
|
||||
.power = 500,
|
||||
.set_phy_power = am35x_musb_phy_power,
|
||||
.clear_irq = am35x_musb_clear_irq,
|
||||
.set_mode = am35x_set_mode,
|
||||
.reset = am35x_musb_reset,
|
||||
};
|
||||
|
||||
static __init void am3517_evm_musb_init(void)
|
||||
{
|
||||
u32 devconf2;
|
||||
|
||||
/*
|
||||
* Set up USB clock/mode in the DEVCONF2 register.
|
||||
*/
|
||||
devconf2 = omap_ctrl_readl(AM35XX_CONTROL_DEVCONF2);
|
||||
|
||||
/* USB2.0 PHY reference clock is 13 MHz */
|
||||
devconf2 &= ~(CONF2_REFFREQ | CONF2_OTGMODE | CONF2_PHY_GPIOMODE);
|
||||
devconf2 |= CONF2_REFFREQ_13MHZ | CONF2_SESENDEN | CONF2_VBDTCTEN
|
||||
| CONF2_DATPOL;
|
||||
|
||||
omap_ctrl_writel(devconf2, AM35XX_CONTROL_DEVCONF2);
|
||||
|
||||
usb_musb_init(&musb_board_data);
|
||||
}
|
||||
|
||||
static __init void am3517_evm_mcbsp1_init(void)
|
||||
{
|
||||
u32 devconf0;
|
||||
|
||||
/* McBSP1 CLKR/FSR signal to be connected to CLKX/FSX pin */
|
||||
devconf0 = omap_ctrl_readl(OMAP2_CONTROL_DEVCONF0);
|
||||
devconf0 |= OMAP2_MCBSP1_CLKR_MASK | OMAP2_MCBSP1_FSR_MASK;
|
||||
omap_ctrl_writel(devconf0, OMAP2_CONTROL_DEVCONF0);
|
||||
}
|
||||
|
||||
static struct usbhs_phy_data phy_data[] __initdata = {
|
||||
{
|
||||
.port = 1,
|
||||
.reset_gpio = 57,
|
||||
.vcc_gpio = -EINVAL,
|
||||
},
|
||||
};
|
||||
|
||||
static struct usbhs_omap_platform_data usbhs_bdata __initdata = {
|
||||
.port_mode[0] = OMAP_EHCI_PORT_MODE_PHY,
|
||||
.port_mode[1] = OMAP_EHCI_PORT_MODE_PHY,
|
||||
};
|
||||
|
||||
#ifdef CONFIG_OMAP_MUX
|
||||
static struct omap_board_mux board_mux[] __initdata = {
|
||||
/* USB OTG DRVVBUS offset = 0x212 */
|
||||
OMAP3_MUX(SAD2D_MCAD23, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLDOWN),
|
||||
{ .reg_offset = OMAP_MUX_TERMINATOR },
|
||||
};
|
||||
#endif
|
||||
|
||||
|
||||
static struct resource am3517_hecc_resources[] = {
|
||||
{
|
||||
.start = AM35XX_IPSS_HECC_BASE,
|
||||
.end = AM35XX_IPSS_HECC_BASE + 0x3FFF,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
{
|
||||
.start = 24 + OMAP_INTC_START,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
static struct platform_device am3517_hecc_device = {
|
||||
.name = "ti_hecc",
|
||||
.id = -1,
|
||||
.num_resources = ARRAY_SIZE(am3517_hecc_resources),
|
||||
.resource = am3517_hecc_resources,
|
||||
};
|
||||
|
||||
static struct ti_hecc_platform_data am3517_evm_hecc_pdata = {
|
||||
.scc_hecc_offset = AM35XX_HECC_SCC_HECC_OFFSET,
|
||||
.scc_ram_offset = AM35XX_HECC_SCC_RAM_OFFSET,
|
||||
.hecc_ram_offset = AM35XX_HECC_RAM_OFFSET,
|
||||
.mbx_offset = AM35XX_HECC_MBOX_OFFSET,
|
||||
.int_line = AM35XX_HECC_INT_LINE,
|
||||
.version = AM35XX_HECC_VERSION,
|
||||
};
|
||||
|
||||
static void am3517_evm_hecc_init(struct ti_hecc_platform_data *pdata)
|
||||
{
|
||||
am3517_hecc_device.dev.platform_data = pdata;
|
||||
platform_device_register(&am3517_hecc_device);
|
||||
}
|
||||
|
||||
static struct omap2_hsmmc_info mmc[] = {
|
||||
{
|
||||
.mmc = 1,
|
||||
.caps = MMC_CAP_4_BIT_DATA,
|
||||
.gpio_cd = 127,
|
||||
.gpio_wp = 126,
|
||||
},
|
||||
{
|
||||
.mmc = 2,
|
||||
.caps = MMC_CAP_4_BIT_DATA,
|
||||
.gpio_cd = 128,
|
||||
.gpio_wp = 129,
|
||||
},
|
||||
{} /* Terminator */
|
||||
};
|
||||
|
||||
static void __init am3517_evm_init(void)
|
||||
{
|
||||
omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
|
||||
|
||||
am3517_evm_i2c_init();
|
||||
|
||||
am3517_evm_display_init();
|
||||
|
||||
omap_serial_init();
|
||||
omap_sdrc_init(NULL, NULL);
|
||||
|
||||
/* Configure GPIO for EHCI port */
|
||||
omap_mux_init_gpio(57, OMAP_PIN_OUTPUT);
|
||||
|
||||
usbhs_init_phys(phy_data, ARRAY_SIZE(phy_data));
|
||||
usbhs_init(&usbhs_bdata);
|
||||
am3517_evm_hecc_init(&am3517_evm_hecc_pdata);
|
||||
|
||||
/* RTC - S35390A */
|
||||
am3517_evm_rtc_init();
|
||||
|
||||
i2c_register_board_info(1, am3517evm_i2c1_boardinfo,
|
||||
ARRAY_SIZE(am3517evm_i2c1_boardinfo));
|
||||
/*Ethernet*/
|
||||
am35xx_emac_init(AM35XX_DEFAULT_MDIO_FREQUENCY, 1);
|
||||
|
||||
/* MUSB */
|
||||
am3517_evm_musb_init();
|
||||
|
||||
/* McBSP1 */
|
||||
am3517_evm_mcbsp1_init();
|
||||
|
||||
/* MMC init function */
|
||||
omap_hsmmc_init(mmc);
|
||||
}
|
||||
|
||||
MACHINE_START(OMAP3517EVM, "OMAP3517/AM3517 EVM")
|
||||
.atag_offset = 0x100,
|
||||
.reserve = omap_reserve,
|
||||
.map_io = omap3_map_io,
|
||||
.init_early = am35xx_init_early,
|
||||
.init_irq = omap3_init_irq,
|
||||
.init_machine = am3517_evm_init,
|
||||
.init_late = am35xx_init_late,
|
||||
.init_time = omap3_sync32k_timer_init,
|
||||
.restart = omap3xxx_restart,
|
||||
MACHINE_END
|
@ -1,335 +0,0 @@
|
||||
/*
|
||||
* linux/arch/arm/mach-omap2/board-cm-t3517.c
|
||||
*
|
||||
* Support for the CompuLab CM-T3517 modules
|
||||
*
|
||||
* Copyright (C) 2010 CompuLab, Ltd.
|
||||
* Author: Igor Grinberg <grinberg@compulab.co.il>
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*
|
||||
*/
|
||||
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/gpio.h>
|
||||
#include <linux/leds.h>
|
||||
#include <linux/omap-gpmc.h>
|
||||
#include <linux/rtc-v3020.h>
|
||||
#include <linux/mtd/mtd.h>
|
||||
#include <linux/mtd/nand.h>
|
||||
#include <linux/mtd/partitions.h>
|
||||
#include <linux/mmc/host.h>
|
||||
#include <linux/can/platform/ti_hecc.h>
|
||||
|
||||
#include <asm/mach-types.h>
|
||||
#include <asm/mach/arch.h>
|
||||
#include <asm/mach/map.h>
|
||||
|
||||
#include "common.h"
|
||||
#include <linux/platform_data/mtd-nand-omap2.h>
|
||||
|
||||
#include "am35xx.h"
|
||||
|
||||
#include "mux.h"
|
||||
#include "control.h"
|
||||
#include "hsmmc.h"
|
||||
#include "common-board-devices.h"
|
||||
#include "am35xx-emac.h"
|
||||
|
||||
#if defined(CONFIG_LEDS_GPIO) || defined(CONFIG_LEDS_GPIO_MODULE)
|
||||
static struct gpio_led cm_t3517_leds[] = {
|
||||
[0] = {
|
||||
.gpio = 186,
|
||||
.name = "cm-t3517:green",
|
||||
.default_trigger = "heartbeat",
|
||||
.active_low = 0,
|
||||
},
|
||||
};
|
||||
|
||||
static struct gpio_led_platform_data cm_t3517_led_pdata = {
|
||||
.num_leds = ARRAY_SIZE(cm_t3517_leds),
|
||||
.leds = cm_t3517_leds,
|
||||
};
|
||||
|
||||
static struct platform_device cm_t3517_led_device = {
|
||||
.name = "leds-gpio",
|
||||
.id = -1,
|
||||
.dev = {
|
||||
.platform_data = &cm_t3517_led_pdata,
|
||||
},
|
||||
};
|
||||
|
||||
static void __init cm_t3517_init_leds(void)
|
||||
{
|
||||
platform_device_register(&cm_t3517_led_device);
|
||||
}
|
||||
#else
|
||||
static inline void cm_t3517_init_leds(void) {}
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_CAN_TI_HECC) || defined(CONFIG_CAN_TI_HECC_MODULE)
|
||||
static struct resource cm_t3517_hecc_resources[] = {
|
||||
{
|
||||
.start = AM35XX_IPSS_HECC_BASE,
|
||||
.end = AM35XX_IPSS_HECC_BASE + SZ_16K - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
{
|
||||
.start = 24 + OMAP_INTC_START,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
static struct ti_hecc_platform_data cm_t3517_hecc_pdata = {
|
||||
.scc_hecc_offset = AM35XX_HECC_SCC_HECC_OFFSET,
|
||||
.scc_ram_offset = AM35XX_HECC_SCC_RAM_OFFSET,
|
||||
.hecc_ram_offset = AM35XX_HECC_RAM_OFFSET,
|
||||
.mbx_offset = AM35XX_HECC_MBOX_OFFSET,
|
||||
.int_line = AM35XX_HECC_INT_LINE,
|
||||
.version = AM35XX_HECC_VERSION,
|
||||
};
|
||||
|
||||
static struct platform_device cm_t3517_hecc_device = {
|
||||
.name = "ti_hecc",
|
||||
.id = 1,
|
||||
.num_resources = ARRAY_SIZE(cm_t3517_hecc_resources),
|
||||
.resource = cm_t3517_hecc_resources,
|
||||
.dev = {
|
||||
.platform_data = &cm_t3517_hecc_pdata,
|
||||
},
|
||||
};
|
||||
|
||||
static void cm_t3517_init_hecc(void)
|
||||
{
|
||||
platform_device_register(&cm_t3517_hecc_device);
|
||||
}
|
||||
#else
|
||||
static inline void cm_t3517_init_hecc(void) {}
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_MMC_OMAP_HS) || defined(CONFIG_MMC_OMAP_HS_MODULE)
|
||||
static struct omap2_hsmmc_info cm_t3517_mmc[] = {
|
||||
{
|
||||
.mmc = 1,
|
||||
.caps = MMC_CAP_4_BIT_DATA,
|
||||
.gpio_cd = 144,
|
||||
.gpio_wp = 59,
|
||||
},
|
||||
{
|
||||
.mmc = 2,
|
||||
.caps = MMC_CAP_4_BIT_DATA,
|
||||
.gpio_cd = -EINVAL,
|
||||
.gpio_wp = -EINVAL,
|
||||
},
|
||||
{} /* Terminator */
|
||||
};
|
||||
#else
|
||||
#define cm_t3517_mmc NULL
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_RTC_DRV_V3020) || defined(CONFIG_RTC_DRV_V3020_MODULE)
|
||||
#define RTC_IO_GPIO (153)
|
||||
#define RTC_WR_GPIO (154)
|
||||
#define RTC_RD_GPIO (53)
|
||||
#define RTC_CS_GPIO (163)
|
||||
#define RTC_CS_EN_GPIO (160)
|
||||
|
||||
struct v3020_platform_data cm_t3517_v3020_pdata = {
|
||||
.use_gpio = 1,
|
||||
.gpio_cs = RTC_CS_GPIO,
|
||||
.gpio_wr = RTC_WR_GPIO,
|
||||
.gpio_rd = RTC_RD_GPIO,
|
||||
.gpio_io = RTC_IO_GPIO,
|
||||
};
|
||||
|
||||
static struct platform_device cm_t3517_rtc_device = {
|
||||
.name = "v3020",
|
||||
.id = -1,
|
||||
.dev = {
|
||||
.platform_data = &cm_t3517_v3020_pdata,
|
||||
}
|
||||
};
|
||||
|
||||
static void __init cm_t3517_init_rtc(void)
|
||||
{
|
||||
int err;
|
||||
|
||||
err = gpio_request_one(RTC_CS_EN_GPIO, GPIOF_OUT_INIT_HIGH,
|
||||
"rtc cs en");
|
||||
if (err) {
|
||||
pr_err("CM-T3517: rtc cs en gpio request failed: %d\n", err);
|
||||
return;
|
||||
}
|
||||
|
||||
platform_device_register(&cm_t3517_rtc_device);
|
||||
}
|
||||
#else
|
||||
static inline void cm_t3517_init_rtc(void) {}
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_USB_EHCI_HCD) || defined(CONFIG_USB_EHCI_HCD_MODULE)
|
||||
#define HSUSB1_RESET_GPIO (146)
|
||||
#define HSUSB2_RESET_GPIO (147)
|
||||
#define USB_HUB_RESET_GPIO (152)
|
||||
|
||||
static struct usbhs_phy_data phy_data[] __initdata = {
|
||||
{
|
||||
.port = 1,
|
||||
.reset_gpio = HSUSB1_RESET_GPIO,
|
||||
.vcc_gpio = -EINVAL,
|
||||
},
|
||||
{
|
||||
.port = 2,
|
||||
.reset_gpio = HSUSB2_RESET_GPIO,
|
||||
.vcc_gpio = -EINVAL,
|
||||
},
|
||||
};
|
||||
|
||||
static struct usbhs_omap_platform_data cm_t3517_ehci_pdata __initdata = {
|
||||
.port_mode[0] = OMAP_EHCI_PORT_MODE_PHY,
|
||||
.port_mode[1] = OMAP_EHCI_PORT_MODE_PHY,
|
||||
};
|
||||
|
||||
static int __init cm_t3517_init_usbh(void)
|
||||
{
|
||||
int err;
|
||||
|
||||
err = gpio_request_one(USB_HUB_RESET_GPIO, GPIOF_OUT_INIT_LOW,
|
||||
"usb hub rst");
|
||||
if (err) {
|
||||
pr_err("CM-T3517: usb hub rst gpio request failed: %d\n", err);
|
||||
} else {
|
||||
udelay(10);
|
||||
gpio_set_value(USB_HUB_RESET_GPIO, 1);
|
||||
msleep(1);
|
||||
}
|
||||
|
||||
usbhs_init_phys(phy_data, ARRAY_SIZE(phy_data));
|
||||
usbhs_init(&cm_t3517_ehci_pdata);
|
||||
|
||||
return 0;
|
||||
}
|
||||
#else
|
||||
static inline int cm_t3517_init_usbh(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_MTD_NAND_OMAP2) || defined(CONFIG_MTD_NAND_OMAP2_MODULE)
|
||||
static struct mtd_partition cm_t3517_nand_partitions[] = {
|
||||
{
|
||||
.name = "xloader",
|
||||
.offset = 0, /* Offset = 0x00000 */
|
||||
.size = 4 * NAND_BLOCK_SIZE,
|
||||
.mask_flags = MTD_WRITEABLE
|
||||
},
|
||||
{
|
||||
.name = "uboot",
|
||||
.offset = MTDPART_OFS_APPEND, /* Offset = 0x80000 */
|
||||
.size = 15 * NAND_BLOCK_SIZE,
|
||||
},
|
||||
{
|
||||
.name = "uboot environment",
|
||||
.offset = MTDPART_OFS_APPEND, /* Offset = 0x260000 */
|
||||
.size = 2 * NAND_BLOCK_SIZE,
|
||||
},
|
||||
{
|
||||
.name = "linux",
|
||||
.offset = MTDPART_OFS_APPEND, /* Offset = 0x2A0000 */
|
||||
.size = 32 * NAND_BLOCK_SIZE,
|
||||
},
|
||||
{
|
||||
.name = "rootfs",
|
||||
.offset = MTDPART_OFS_APPEND, /* Offset = 0x6A0000 */
|
||||
.size = MTDPART_SIZ_FULL,
|
||||
},
|
||||
};
|
||||
|
||||
static struct omap_nand_platform_data cm_t3517_nand_data = {
|
||||
.parts = cm_t3517_nand_partitions,
|
||||
.nr_parts = ARRAY_SIZE(cm_t3517_nand_partitions),
|
||||
.cs = 0,
|
||||
};
|
||||
|
||||
static void __init cm_t3517_init_nand(void)
|
||||
{
|
||||
if (gpmc_nand_init(&cm_t3517_nand_data, NULL) < 0)
|
||||
pr_err("CM-T3517: NAND initialization failed\n");
|
||||
}
|
||||
#else
|
||||
static inline void cm_t3517_init_nand(void) {}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_OMAP_MUX
|
||||
static struct omap_board_mux board_mux[] __initdata = {
|
||||
/* GPIO186 - Green LED */
|
||||
OMAP3_MUX(SYS_CLKOUT2, OMAP_MUX_MODE4 | OMAP_PIN_OUTPUT),
|
||||
|
||||
/* RTC GPIOs: */
|
||||
/* IO - GPIO153 */
|
||||
OMAP3_MUX(MCBSP4_DR, OMAP_MUX_MODE4 | OMAP_PIN_INPUT),
|
||||
/* WR# - GPIO154 */
|
||||
OMAP3_MUX(MCBSP4_DX, OMAP_MUX_MODE4 | OMAP_PIN_INPUT),
|
||||
/* RD# - GPIO53 */
|
||||
OMAP3_MUX(GPMC_NCS2, OMAP_MUX_MODE4 | OMAP_PIN_INPUT),
|
||||
/* CS# - GPIO163 */
|
||||
OMAP3_MUX(UART3_CTS_RCTX, OMAP_MUX_MODE4 | OMAP_PIN_INPUT),
|
||||
/* CS EN - GPIO160 */
|
||||
OMAP3_MUX(MCBSP_CLKS, OMAP_MUX_MODE4 | OMAP_PIN_INPUT),
|
||||
|
||||
/* HSUSB1 RESET */
|
||||
OMAP3_MUX(UART2_TX, OMAP_MUX_MODE4 | OMAP_PIN_OUTPUT),
|
||||
/* HSUSB2 RESET */
|
||||
OMAP3_MUX(UART2_RX, OMAP_MUX_MODE4 | OMAP_PIN_OUTPUT),
|
||||
/* CM-T3517 USB HUB nRESET */
|
||||
OMAP3_MUX(MCBSP4_CLKX, OMAP_MUX_MODE4 | OMAP_PIN_OUTPUT),
|
||||
|
||||
/* CD - GPIO144 and WP - GPIO59 for MMC1 - SB-T35 */
|
||||
OMAP3_MUX(UART2_CTS, OMAP_MUX_MODE4 | OMAP_PIN_INPUT_PULLUP),
|
||||
OMAP3_MUX(GPMC_CLK, OMAP_MUX_MODE4 | OMAP_PIN_INPUT_PULLUP),
|
||||
|
||||
{ .reg_offset = OMAP_MUX_TERMINATOR },
|
||||
};
|
||||
#endif
|
||||
|
||||
static void __init cm_t3517_init(void)
|
||||
{
|
||||
omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
|
||||
omap_serial_init();
|
||||
omap_sdrc_init(NULL, NULL);
|
||||
cm_t3517_init_leds();
|
||||
cm_t3517_init_nand();
|
||||
cm_t3517_init_rtc();
|
||||
cm_t3517_init_usbh();
|
||||
cm_t3517_init_hecc();
|
||||
am35xx_emac_init(AM35XX_DEFAULT_MDIO_FREQUENCY, 1);
|
||||
omap_hsmmc_init(cm_t3517_mmc);
|
||||
}
|
||||
|
||||
MACHINE_START(CM_T3517, "Compulab CM-T3517")
|
||||
.atag_offset = 0x100,
|
||||
.reserve = omap_reserve,
|
||||
.map_io = omap3_map_io,
|
||||
.init_early = am35xx_init_early,
|
||||
.init_irq = omap3_init_irq,
|
||||
.init_machine = cm_t3517_init,
|
||||
.init_late = am35xx_init_late,
|
||||
.init_time = omap3_gptimer_timer_init,
|
||||
.restart = omap3xxx_restart,
|
||||
MACHINE_END
|
@ -29,8 +29,6 @@
|
||||
#include <linux/platform_data/mailbox-omap.h>
|
||||
#include <plat/dmtimer.h>
|
||||
|
||||
#include "am35xx.h"
|
||||
|
||||
#include "soc.h"
|
||||
#include "omap_hwmod.h"
|
||||
#include "omap_hwmod_common_data.h"
|
||||
@ -50,6 +48,8 @@
|
||||
* elsewhere.
|
||||
*/
|
||||
|
||||
#define AM35XX_IPSS_USBOTGSS_BASE 0x5C040000
|
||||
|
||||
/*
|
||||
* IP blocks
|
||||
*/
|
||||
@ -3459,15 +3459,6 @@ static struct omap_hwmod_ocp_if am35xx_mdio__l3 = {
|
||||
.user = OCP_USER_MPU,
|
||||
};
|
||||
|
||||
static struct omap_hwmod_addr_space am35xx_mdio_addrs[] = {
|
||||
{
|
||||
.pa_start = AM35XX_IPSS_MDIO_BASE,
|
||||
.pa_end = AM35XX_IPSS_MDIO_BASE + SZ_4K - 1,
|
||||
.flags = ADDR_TYPE_RT,
|
||||
},
|
||||
{ }
|
||||
};
|
||||
|
||||
/* l4_core -> davinci mdio */
|
||||
/*
|
||||
* XXX Should be connected to an IPSS hwmod, not the L4_CORE directly;
|
||||
@ -3478,25 +3469,15 @@ static struct omap_hwmod_ocp_if am35xx_l4_core__mdio = {
|
||||
.master = &omap3xxx_l4_core_hwmod,
|
||||
.slave = &am35xx_mdio_hwmod,
|
||||
.clk = "emac_fck",
|
||||
.addr = am35xx_mdio_addrs,
|
||||
.user = OCP_USER_MPU,
|
||||
};
|
||||
|
||||
static struct omap_hwmod_irq_info am35xx_emac_mpu_irqs[] = {
|
||||
{ .name = "rxthresh", .irq = 67 + OMAP_INTC_START, },
|
||||
{ .name = "rx_pulse", .irq = 68 + OMAP_INTC_START, },
|
||||
{ .name = "tx_pulse", .irq = 69 + OMAP_INTC_START },
|
||||
{ .name = "misc_pulse", .irq = 70 + OMAP_INTC_START },
|
||||
{ .irq = -1 },
|
||||
};
|
||||
|
||||
static struct omap_hwmod_class am35xx_emac_class = {
|
||||
.name = "davinci_emac",
|
||||
};
|
||||
|
||||
static struct omap_hwmod am35xx_emac_hwmod = {
|
||||
.name = "davinci_emac",
|
||||
.mpu_irqs = am35xx_emac_mpu_irqs,
|
||||
.class = &am35xx_emac_class,
|
||||
/*
|
||||
* According to Mark Greer, the MPU will not return from WFI
|
||||
@ -3519,15 +3500,6 @@ static struct omap_hwmod_ocp_if am35xx_emac__l3 = {
|
||||
.user = OCP_USER_MPU,
|
||||
};
|
||||
|
||||
static struct omap_hwmod_addr_space am35xx_emac_addrs[] = {
|
||||
{
|
||||
.pa_start = AM35XX_IPSS_EMAC_BASE,
|
||||
.pa_end = AM35XX_IPSS_EMAC_BASE + 0x30000 - 1,
|
||||
.flags = ADDR_TYPE_RT,
|
||||
},
|
||||
{ }
|
||||
};
|
||||
|
||||
/* l4_core -> davinci emac */
|
||||
/*
|
||||
* XXX Should be connected to an IPSS hwmod, not the L4_CORE directly;
|
||||
@ -3538,7 +3510,6 @@ static struct omap_hwmod_ocp_if am35xx_l4_core__emac = {
|
||||
.master = &omap3xxx_l4_core_hwmod,
|
||||
.slave = &am35xx_emac_hwmod,
|
||||
.clk = "emac_ick",
|
||||
.addr = am35xx_emac_addrs,
|
||||
.user = OCP_USER_MPU,
|
||||
};
|
||||
|
||||
|
@ -19,7 +19,6 @@
|
||||
#include <linux/platform_data/pinctrl-single.h>
|
||||
#include <linux/platform_data/iommu-omap.h>
|
||||
|
||||
#include "am35xx.h"
|
||||
#include "common.h"
|
||||
#include "common-board-devices.h"
|
||||
#include "dss-common.h"
|
||||
|
Loading…
Reference in New Issue
Block a user