123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 |
- /*
- * TI DA850/OMAP-L138 EVM board
- *
- * Copyright (C) 2009 Texas Instruments Incorporated - http://www.ti.com/
- *
- * Derived from: arch/arm/mach-davinci/board-da830-evm.c
- * Original Copyrights follow:
- *
- * 2007, 2009 (c) MontaVista Software, Inc. This file is licensed under
- * the terms of the GNU General Public License version 2. This program
- * is licensed "as is" without any warranty of any kind, whether express
- * or implied.
- */
- #include <linux/console.h>
- #include <linux/delay.h>
- #include <linux/gpio.h>
- #include <linux/gpio_keys.h>
- #include <linux/init.h>
- #include <linux/kernel.h>
- #include <linux/i2c.h>
- #include <linux/i2c/at24.h>
- #include <linux/i2c/pca953x.h>
- #include <linux/input.h>
- #include <linux/input/tps6507x-ts.h>
- #include <linux/mfd/tps6507x.h>
- #include <linux/mtd/mtd.h>
- #include <linux/mtd/nand.h>
- #include <linux/mtd/partitions.h>
- #include <linux/mtd/physmap.h>
- #include <linux/platform_device.h>
- #include <linux/platform_data/mtd-davinci.h>
- #include <linux/platform_data/mtd-davinci-aemif.h>
- #include <linux/platform_data/spi-davinci.h>
- #include <linux/platform_data/uio_pruss.h>
- #include <linux/regulator/machine.h>
- #include <linux/regulator/tps6507x.h>
- #include <linux/spi/spi.h>
- #include <linux/spi/flash.h>
- #include <linux/wl12xx.h>
- #include <mach/cp_intc.h>
- #include <mach/da8xx.h>
- #include <mach/mux.h>
- #include <mach/sram.h>
- #include <asm/mach-types.h>
- #include <asm/mach/arch.h>
- #include <asm/system_info.h>
- #include <media/tvp514x.h>
- #include <media/adv7343.h>
- #define DA850_EVM_PHY_ID "davinci_mdio-0:00"
- #define DA850_LCD_PWR_PIN GPIO_TO_PIN(2, 8)
- #define DA850_LCD_BL_PIN GPIO_TO_PIN(2, 15)
- #define DA850_MMCSD_CD_PIN GPIO_TO_PIN(4, 0)
- #define DA850_MMCSD_WP_PIN GPIO_TO_PIN(4, 1)
- #define DA850_WLAN_EN GPIO_TO_PIN(6, 9)
- #define DA850_WLAN_IRQ GPIO_TO_PIN(6, 10)
- #define DA850_MII_MDIO_CLKEN_PIN GPIO_TO_PIN(2, 6)
- static struct mtd_partition da850evm_spiflash_part[] = {
- [0] = {
- .name = "UBL",
- .offset = 0,
- .size = SZ_64K,
- .mask_flags = MTD_WRITEABLE,
- },
- [1] = {
- .name = "U-Boot",
- .offset = MTDPART_OFS_APPEND,
- .size = SZ_512K,
- .mask_flags = MTD_WRITEABLE,
- },
- [2] = {
- .name = "U-Boot-Env",
- .offset = MTDPART_OFS_APPEND,
- .size = SZ_64K,
- .mask_flags = MTD_WRITEABLE,
- },
- [3] = {
- .name = "Kernel",
- .offset = MTDPART_OFS_APPEND,
- .size = SZ_2M + SZ_512K,
- .mask_flags = 0,
- },
- [4] = {
- .name = "Filesystem",
- .offset = MTDPART_OFS_APPEND,
- .size = SZ_4M,
- .mask_flags = 0,
- },
- [5] = {
- .name = "MAC-Address",
- .offset = SZ_8M - SZ_64K,
- .size = SZ_64K,
- .mask_flags = MTD_WRITEABLE,
- },
- };
- static struct flash_platform_data da850evm_spiflash_data = {
- .name = "m25p80",
- .parts = da850evm_spiflash_part,
- .nr_parts = ARRAY_SIZE(da850evm_spiflash_part),
- .type = "m25p64",
- };
- static struct davinci_spi_config da850evm_spiflash_cfg = {
- .io_type = SPI_IO_TYPE_DMA,
- .c2tdelay = 8,
- .t2cdelay = 8,
- };
- static struct spi_board_info da850evm_spi_info[] = {
- {
- .modalias = "m25p80",
- .platform_data = &da850evm_spiflash_data,
- .controller_data = &da850evm_spiflash_cfg,
- .mode = SPI_MODE_0,
- .max_speed_hz = 30000000,
- .bus_num = 1,
- .chip_select = 0,
- },
- };
- #ifdef CONFIG_MTD
- static void da850_evm_m25p80_notify_add(struct mtd_info *mtd)
- {
- char *mac_addr = davinci_soc_info.emac_pdata->mac_addr;
- size_t retlen;
- if (!strcmp(mtd->name, "MAC-Address")) {
- mtd_read(mtd, 0, ETH_ALEN, &retlen, mac_addr);
- if (retlen == ETH_ALEN)
- pr_info("Read MAC addr from SPI Flash: %pM\n",
- mac_addr);
- }
- }
- static struct mtd_notifier da850evm_spi_notifier = {
- .add = da850_evm_m25p80_notify_add,
- };
- static void da850_evm_setup_mac_addr(void)
- {
- register_mtd_user(&da850evm_spi_notifier);
- }
- #else
- static void da850_evm_setup_mac_addr(void) { }
|