blob: aa57703c686a1d7446d03f92e9067aa0c73a49e2 [file] [log] [blame]
Sergey Kubushync74b2102007-08-10 20:26:18 +02001/*
2 * Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net>
3 *
4 * See file CREDITS for list of people who contributed to this
5 * project.
6 *
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License as
9 * published by the Free Software Foundation; either version 2 of
10 * the License, or (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
20 * MA 02111-1307 USA
21 */
22#ifndef _EMIF_DEFS_H_
23#define _EMIF_DEFS_H_
24
25#include <asm/arch/hardware.h>
26
Nick Thompson6228e632010-02-08 11:34:58 -050027typedef struct davinci_emif_regs {
Sergey Kubushync74b2102007-08-10 20:26:18 +020028 dv_reg ERCSR;
29 dv_reg AWCCR;
30 dv_reg SDBCR;
31 dv_reg SDRCR;
32 dv_reg AB1CR;
33 dv_reg AB2CR;
34 dv_reg AB3CR;
35 dv_reg AB4CR;
36 dv_reg SDTIMR;
37 dv_reg DDRSR;
38 dv_reg DDRPHYCR;
39 dv_reg DDRPHYSR;
40 dv_reg TOTAR;
41 dv_reg TOTACTR;
42 dv_reg DDRPHYID_REV;
43 dv_reg SDSRETR;
44 dv_reg EIRR;
45 dv_reg EIMR;
46 dv_reg EIMSR;
47 dv_reg EIMCR;
48 dv_reg IOCTRLR;
49 dv_reg IOSTATR;
50 u_int8_t RSVD0[8];
51 dv_reg NANDFCR;
52 dv_reg NANDFSR;
53 u_int8_t RSVD1[8];
Nick Thompson97f4eb82009-12-12 12:12:26 -050054 dv_reg NANDFECC[4];
Sandeep Paulraj77b351c2009-08-18 10:10:42 -040055 u_int8_t RSVD2[60];
56 dv_reg NAND4BITECCLOAD;
57 dv_reg NAND4BITECC1;
58 dv_reg NAND4BITECC2;
59 dv_reg NAND4BITECC3;
60 dv_reg NAND4BITECC4;
61 dv_reg NANDERRADD1;
62 dv_reg NANDERRADD2;
63 dv_reg NANDERRVAL1;
64 dv_reg NANDERRVAL2;
Sergey Kubushync74b2102007-08-10 20:26:18 +020065} emif_registers;
66
67typedef emif_registers *emifregs;
Nick Thompson97f4eb82009-12-12 12:12:26 -050068
Nick Thompson6228e632010-02-08 11:34:58 -050069#define davinci_emif_regs \
70 ((struct davinci_emif_regs *)DAVINCI_ASYNC_EMIF_CNTRL_BASE)
71
Nick Thompson26be2c52009-12-12 12:13:10 -050072#define DAVINCI_NANDFCR_NAND_ENABLE(n) (1 << (n-2))
Nick Thompson97f4eb82009-12-12 12:12:26 -050073#define DAVINCI_NANDFCR_4BIT_ECC_SEL_MASK (3 << 4)
74#define DAVINCI_NANDFCR_4BIT_ECC_SEL(n) ((n-2) << 4)
Nick Thompson97f4eb82009-12-12 12:12:26 -050075#define DAVINCI_NANDFCR_1BIT_ECC_START(n) (1 << (8 + (n-2)))
Nick Thompson97f4eb82009-12-12 12:12:26 -050076#define DAVINCI_NANDFCR_4BIT_ECC_START (1 << 12)
77#define DAVINCI_NANDFCR_4BIT_CALC_START (1 << 13)
78
Nick Thompson6228e632010-02-08 11:34:58 -050079/* Chip Select setup */
80#define DAVINCI_ABCR_STROBE_SELECT (1 << 31)
81#define DAVINCI_ABCR_EXT_WAIT (1 << 30)
82#define DAVINCI_ABCR_WSETUP(n) (n << 26)
83#define DAVINCI_ABCR_WSTROBE(n) (n << 20)
84#define DAVINCI_ABCR_WHOLD(n) (n << 17)
85#define DAVINCI_ABCR_RSETUP(n) (n << 13)
86#define DAVINCI_ABCR_RSTROBE(n) (n << 7)
87#define DAVINCI_ABCR_RHOLD(n) (n << 4)
88#define DAVINCI_ABCR_TA(n) (n << 2)
89#define DAVINCI_ABCR_ASIZE_16BIT 1
90#define DAVINCI_ABCR_ASIZE_8BIT 0
91
Sergey Kubushync74b2102007-08-10 20:26:18 +020092#endif