| /** |
| * @file |
| * @brief This file contains the GPMC's generic definitions |
| * |
| * FileName: include/asm-arm/arch-omap/gpmc.h |
| * |
| * OMAP's General Purpose Memory Controller(GPMC) provides features |
| * allowing us to communicate with memory devices such as NOR, NAND, |
| * OneNAND, SRAM etc.. This file defines certain generic parameters |
| * allowing us to configure the same painlessly. |
| * |
| */ |
| /* |
| * (C) Copyright 2008 |
| * Texas Instruments, <www.ti.com> |
| * Nishanth Menon <x0nishan@ti.com> |
| * |
| * Originally from Linux kernel: |
| * http://linux.omap.com/pub/kernel/3430zoom/linux-ldp-v1.0b.tar.gz |
| * include/asm-arm/arch-omap/omap34xx.h |
| * |
| * Copyright (C) 2007 Texas Instruments, <www.ti.com> |
| * Copyright (C) 2007 Nokia Corporation. |
| * |
| * 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; either version 2 of |
| * the License, or (at your option) any later version. |
| * |
| * 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., 59 Temple Place, Suite 330, Boston, |
| * MA 02111-1307 USA |
| */ |
| |
| #ifndef __ASM_ARCH_OMAP_GPMC_H |
| #define __ASM_ARCH_OMAP_GPMC_H |
| |
| /** GPMC Reg Wrapper */ |
| #define GPMC_REG(REGNAME) (OMAP_GPMC_BASE + GPMC_##REGNAME) |
| |
| #define GPMC_SYS_CONFIG (0x10) |
| #define GPMC_SYS_STATUS (0x14) |
| #define GPMC_IRQSTATUS (0x18) |
| #define GPMC_IRQ_ENABLE (0x1C) |
| #define GPMC_TIMEOUT_CONTROL (0x40) |
| #define GPMC_CFG (0x50) |
| #define GPMC_STATUS (0x54) |
| #define GPMC_PREFETCH_CONFIG_1 (0x1E0) |
| #define GPMC_PREFETCH_CONFIG_2 (0x1E4) |
| #define GPMC_PREFETCH_CTRL (0x1EC) |
| #define GPMC_ECC_CONFIG (0x1F4) |
| #define GPMC_ECC_CONTROL (0x1F8) |
| #define GPMC_ECC_SIZE_CONFIG (0x1FC) |
| #define GPMC_ECC1_RESULT (0x200) |
| #define GPMC_ECC2_RESULT (0x204) |
| #define GPMC_ECC3_RESULT (0x208) |
| #define GPMC_ECC4_RESULT (0x20C) |
| #define GPMC_ECC5_RESULT (0x210) |
| #define GPMC_ECC6_RESULT (0x214) |
| #define GPMC_ECC7_RESULT (0x218) |
| #define GPMC_ECC8_RESULT (0x21C) |
| #define GPMC_ECC9_RESULT (0x220) |
| #define GPMC_ECC_BCH_RESULT_0 0x240 |
| |
| #define GPMC_CONFIG1_0 (0x60) |
| #define GPMC_CONFIG1_1 (0x90) |
| #define GPMC_CONFIG1_2 (0xC0) |
| #define GPMC_CONFIG1_3 (0xF0) |
| #define GPMC_CONFIG1_4 (0x120) |
| #define GPMC_CONFIG1_5 (0x150) |
| #define GPMC_CONFIG1_6 (0x180) |
| #define GPMC_CONFIG1_7 (0x1B0) |
| #define GPMC_CONFIG2_0 (0x64) |
| #define GPMC_CONFIG2_1 (0x94) |
| #define GPMC_CONFIG2_2 (0xC4) |
| #define GPMC_CONFIG2_3 (0xF4) |
| #define GPMC_CONFIG2_4 (0x124) |
| #define GPMC_CONFIG2_5 (0x154) |
| #define GPMC_CONFIG2_6 (0x184) |
| #define GPMC_CONFIG2_7 (0x1B4) |
| #define GPMC_CONFIG3_0 (0x68) |
| #define GPMC_CONFIG3_1 (0x98) |
| #define GPMC_CONFIG3_2 (0xC8) |
| #define GPMC_CONFIG3_3 (0xF8) |
| #define GPMC_CONFIG3_4 (0x128) |
| #define GPMC_CONFIG3_5 (0x158) |
| #define GPMC_CONFIG3_6 (0x188) |
| #define GPMC_CONFIG3_7 (0x1B8) |
| #define GPMC_CONFIG4_0 (0x6C) |
| #define GPMC_CONFIG4_1 (0x9C) |
| #define GPMC_CONFIG4_2 (0xCC) |
| #define GPMC_CONFIG4_3 (0xFC) |
| #define GPMC_CONFIG4_4 (0x12C) |
| #define GPMC_CONFIG4_5 (0x15C) |
| #define GPMC_CONFIG4_6 (0x18C) |
| #define GPMC_CONFIG4_7 (0x1BC) |
| #define GPMC_CONFIG5_0 (0x70) |
| #define GPMC_CONFIG5_1 (0xA0) |
| #define GPMC_CONFIG5_2 (0xD0) |
| #define GPMC_CONFIG5_3 (0x100) |
| #define GPMC_CONFIG5_4 (0x130) |
| #define GPMC_CONFIG5_5 (0x160) |
| #define GPMC_CONFIG5_6 (0x190) |
| #define GPMC_CONFIG5_7 (0x1C0) |
| #define GPMC_CONFIG6_0 (0x74) |
| #define GPMC_CONFIG6_1 (0xA4) |
| #define GPMC_CONFIG6_2 (0xD4) |
| #define GPMC_CONFIG6_3 (0x104) |
| #define GPMC_CONFIG6_4 (0x134) |
| #define GPMC_CONFIG6_5 (0x164) |
| #define GPMC_CONFIG6_6 (0x194) |
| #define GPMC_CONFIG6_7 (0x1C4) |
| #define GPMC_CONFIG7_0 (0x78) |
| #define GPMC_CONFIG7_1 (0xA8) |
| #define GPMC_CONFIG7_2 (0xD8) |
| #define GPMC_CONFIG7_3 (0x108) |
| #define GPMC_CONFIG7_4 (0x138) |
| #define GPMC_CONFIG7_5 (0x168) |
| #define GPMC_CONFIG7_6 (0x198) |
| #define GPMC_CONFIG7_7 (0x1C8) |
| |
| #define GPMC_NUM_CS 8 |
| #define GPMC_CONFIG_CS_SIZE (GPMC_CONFIG1_1 - GPMC_CONFIG1_0) |
| #define GPMC_CONFIG_REG_OFF (GPMC_CONFIG2_0 - GPMC_CONFIG1_0) |
| |
| #define GPMC_CS_NAND_COMMAND (0x1C) |
| #define GPMC_CS_NAND_ADDRESS (0x20) |
| #define GPMC_CS_NAND_DATA (0x24) |
| |
| #define GPMC_SIZE_128M 0x08 |
| #define GPMC_SIZE_64M 0x0C |
| #define GPMC_SIZE_32M 0x0E |
| #define GPMC_SIZE_16M 0x0F |
| |
| #define NAND_WP_BIT 0x00000010 |
| |
| #ifndef __ASSEMBLY__ |
| |
| /** Generic GPMC configuration structure to be used to configure a |
| * chip select |
| */ |
| struct gpmc_config { |
| unsigned int cfg[6]; |
| unsigned int base; |
| unsigned char size; |
| }; |
| |
| /** Generic configuration - will reset all the cs configs. */ |
| void gpmc_generic_init(unsigned int cfg); |
| |
| /** Configuration for a specific chip select */ |
| void gpmc_cs_config(char cs, struct gpmc_config *config); |
| |
| #endif |
| |
| #endif /* __ASM_ARCH_OMAP_GPMC_H */ |