Merge by hand from Linus' tree.
[linux-2.6] / arch / ppc / platforms / ev64360.h
1 /*
2  * arch/ppc/platforms/ev64360.h
3  *
4  * Definitions for Marvell EV-64360-BP Evaluation Board.
5  *
6  * Author: Lee Nicks <allinux@gmail.com>
7  *
8  * Based on code done by Rabeeh Khoury - rabeeh@galileo.co.il
9  * Based on code done by Mark A. Greer <mgreer@mvista.com>
10  *
11  * This program is free software; you can redistribute it and/or modify it
12  * under the terms of the GNU General Public License as published by the
13  * Free Software Foundation; either version 2 of the License, or (at your
14  * option) any later version.
15  */
16
17 /*
18  * The MV64360 has 2 PCI buses each with 1 window from the CPU bus to
19  * PCI I/O space and 4 windows from the CPU bus to PCI MEM space.
20  * We'll only use one PCI MEM window on each PCI bus.
21  *
22  * This is the CPU physical memory map (windows must be at least 64KB and start
23  * on a boundary that is a multiple of the window size):
24  *
25  *    0x42000000-0x4203ffff      - Internal SRAM
26  *    0xf1000000-0xf100ffff      - MV64360 Registers (CONFIG_MV64X60_NEW_BASE)
27  *    0xfc800000-0xfcffffff      - RTC
28  *    0xff000000-0xffffffff      - Boot window, 16 MB flash
29  *    0xc0000000-0xc3ffffff      - PCI I/O (second hose)
30  *    0x80000000-0xbfffffff      - PCI MEM (second hose)
31  */
32
33 #ifndef __PPC_PLATFORMS_EV64360_H
34 #define __PPC_PLATFORMS_EV64360_H
35
36 /* CPU Physical Memory Map setup. */
37 #define EV64360_BOOT_WINDOW_BASE                0xff000000
38 #define EV64360_BOOT_WINDOW_SIZE                0x01000000 /* 16 MB */
39 #define EV64360_INTERNAL_SRAM_BASE              0x42000000
40 #define EV64360_RTC_WINDOW_BASE                 0xfc800000
41 #define EV64360_RTC_WINDOW_SIZE                 0x00800000 /* 8 MB */
42
43 #define EV64360_PCI1_MEM_START_PROC_ADDR        0x80000000
44 #define EV64360_PCI1_MEM_START_PCI_HI_ADDR      0x00000000
45 #define EV64360_PCI1_MEM_START_PCI_LO_ADDR      0x80000000
46 #define EV64360_PCI1_MEM_SIZE                   0x40000000 /* 1 GB */
47 #define EV64360_PCI1_IO_START_PROC_ADDR         0xc0000000
48 #define EV64360_PCI1_IO_START_PCI_ADDR          0x00000000
49 #define EV64360_PCI1_IO_SIZE                    0x04000000 /* 64 MB */
50
51 #define EV64360_DEFAULT_BAUD                    115200
52 #define EV64360_MPSC_CLK_SRC                    8         /* TCLK */
53 #define EV64360_MPSC_CLK_FREQ                   133333333
54
55 #define EV64360_MTD_RESERVED_SIZE               0x40000
56 #define EV64360_MTD_JFFS2_SIZE                  0xec0000
57 #define EV64360_MTD_UBOOT_SIZE                  0x100000
58
59 #define EV64360_ETH0_PHY_ADDR                   8
60 #define EV64360_ETH1_PHY_ADDR                   9
61 #define EV64360_ETH2_PHY_ADDR                   10
62
63 #define EV64360_ETH_TX_QUEUE_SIZE               800
64 #define EV64360_ETH_RX_QUEUE_SIZE               400
65
66 #define EV64360_ETH_PORT_CONFIG_VALUE                   \
67         ETH_UNICAST_NORMAL_MODE                 |       \
68         ETH_DEFAULT_RX_QUEUE_0                  |       \
69         ETH_DEFAULT_RX_ARP_QUEUE_0              |       \
70         ETH_RECEIVE_BC_IF_NOT_IP_OR_ARP         |       \
71         ETH_RECEIVE_BC_IF_IP                    |       \
72         ETH_RECEIVE_BC_IF_ARP                   |       \
73         ETH_CAPTURE_TCP_FRAMES_DIS              |       \
74         ETH_CAPTURE_UDP_FRAMES_DIS              |       \
75         ETH_DEFAULT_RX_TCP_QUEUE_0              |       \
76         ETH_DEFAULT_RX_UDP_QUEUE_0              |       \
77         ETH_DEFAULT_RX_BPDU_QUEUE_0
78
79 #define EV64360_ETH_PORT_CONFIG_EXTEND_VALUE            \
80         ETH_SPAN_BPDU_PACKETS_AS_NORMAL         |       \
81         ETH_PARTITION_DISABLE
82
83 #define GT_ETH_IPG_INT_RX(value)                        \
84         ((value & 0x3fff) << 8)
85
86 #define EV64360_ETH_PORT_SDMA_CONFIG_VALUE              \
87         ETH_RX_BURST_SIZE_4_64BIT               |       \
88         GT_ETH_IPG_INT_RX(0)                    |       \
89         ETH_TX_BURST_SIZE_4_64BIT
90
91 #define EV64360_ETH_PORT_SERIAL_CONTROL_VALUE           \
92         ETH_FORCE_LINK_PASS                     |       \
93         ETH_ENABLE_AUTO_NEG_FOR_DUPLX           |       \
94         ETH_DISABLE_AUTO_NEG_FOR_FLOW_CTRL      |       \
95         ETH_ADV_SYMMETRIC_FLOW_CTRL             |       \
96         ETH_FORCE_FC_MODE_NO_PAUSE_DIS_TX       |       \
97         ETH_FORCE_BP_MODE_NO_JAM                |       \
98         BIT9                                    |       \
99         ETH_DO_NOT_FORCE_LINK_FAIL              |       \
100         ETH_RETRANSMIT_16_ATTEMPTS              |       \
101         ETH_ENABLE_AUTO_NEG_SPEED_GMII          |       \
102         ETH_DTE_ADV_0                           |       \
103         ETH_DISABLE_AUTO_NEG_BYPASS             |       \
104         ETH_AUTO_NEG_NO_CHANGE                  |       \
105         ETH_MAX_RX_PACKET_9700BYTE              |       \
106         ETH_CLR_EXT_LOOPBACK                    |       \
107         ETH_SET_FULL_DUPLEX_MODE                |       \
108         ETH_ENABLE_FLOW_CTRL_TX_RX_IN_FULL_DUPLEX
109
110 static inline u32
111 ev64360_bus_freq(void)
112 {
113         return 133333333;
114 }
115
116 #endif  /* __PPC_PLATFORMS_EV64360_H */