blob: 03dd0cafd2dbff9510929f218779450209dbef84 [file] [log] [blame]
Eran Libertyf046ccd2005-07-28 10:08:46 -05001/*
Dave Liuf6eda7f2006-10-25 14:41:21 -05002 * Copyright (C) 2004-2006 Freescale Semiconductor, Inc.
Eran Libertyf046ccd2005-07-28 10:08:46 -05003 *
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.
Eran Libertyf046ccd2005-07-28 10:08:46 -050011 */
12
13/*
14 * mpc83xx.h
15 *
16 * MPC83xx specific definitions
17 */
18
19#ifndef __MPC83XX_H__
20#define __MPC83XX_H__
21
Dave Liuf6eda7f2006-10-25 14:41:21 -050022#include <config.h>
Eran Libertyf046ccd2005-07-28 10:08:46 -050023#if defined(CONFIG_E300)
24#include <asm/e300.h>
25#endif
26
27/*
28 * MPC83xx cpu provide RCR register to do reset thing specially. easier
29 * to implement
30 */
31
32#define MPC83xx_RESET
33
34/*
35 * System reset offset (PowerPC standard)
36 */
37#define EXC_OFF_SYS_RESET 0x0100
38
39/*
40 * Default Internal Memory Register Space (Freescale recomandation)
41 */
42#define CONFIG_DEFAULT_IMMR 0xFF400000
43
44/*
45 * Watchdog
46 */
Jon Loeligerde1d0a62005-08-01 13:20:47 -050047#define SWCRR 0x0204
Eran Libertyf046ccd2005-07-28 10:08:46 -050048#define SWCRR_SWTC 0xFFFF0000 /* Software Watchdog Time Count. */
49#define SWCRR_SWEN 0x00000004 /* Watchdog Enable bit. */
Jon Loeligerde1d0a62005-08-01 13:20:47 -050050#define SWCRR_SWRI 0x00000002 /* Software Watchdog Reset/Interrupt Select bit. */
Eran Libertyf046ccd2005-07-28 10:08:46 -050051#define SWCRR_SWPR 0x00000001 /* Software Watchdog Counter Prescale bit. */
52#define SWCRR_RES ~(SWCRR_SWTC | SWCRR_SWEN | SWCRR_SWRI | SWCRR_SWPR)
53
54#define SWCNR 0x0208
55#define SWCNR_SWCN 0x0000FFFF Software Watchdog Count Field.
56#define SWCNR_RES ~(SWCNR_SWCN)
57
58#define SWSRR 0x020E
59
60/*
61 * Default Internal Memory Register Space (Freescale recomandation)
62 */
63#define IMMRBAR 0x0000
64#define IMMRBAR_BASE_ADDR 0xFFF00000 /* Identifies the 12 most-significant address bits of the base of the 1 MByte internal memory window. */
65#define IMMRBAR_RES ~(IMMRBAR_BASE_ADDR)
66
67/*
68 * Default Internal Memory Register Space (Freescale recomandation)
69 */
70#define LBLAWBAR0 0x0020
71#define LBLAWAR0 0x0024
72#define LBLAWBAR1 0x0028
73#define LBLAWAR1 0x002C
74#define LBLAWBAR2 0x0030
75#define LBLAWAR2 0x0034
76#define LBLAWBAR3 0x0038
77#define LBLAWAR3 0x003C
78
Dave Liuf6eda7f2006-10-25 14:41:21 -050079/*
80 * The device ID and revision numbers
81 */
Dave Liu5f820432006-11-03 19:33:44 -060082#define SPR_8349E_REV10 0x80300100
83#define SPR_8349_REV10 0x80310100
84#define SPR_8347E_REV10_TBGA 0x80320100
85#define SPR_8347_REV10_TBGA 0x80330100
86#define SPR_8347E_REV10_PBGA 0x80340100
87#define SPR_8347_REV10_PBGA 0x80350100
88#define SPR_8343E_REV10 0x80360100
89#define SPR_8343_REV10 0x80370100
90
91#define SPR_8349E_REV11 0x80300101
92#define SPR_8349_REV11 0x80310101
93#define SPR_8347E_REV11_TBGA 0x80320101
94#define SPR_8347_REV11_TBGA 0x80330101
95#define SPR_8347E_REV11_PBGA 0x80340101
96#define SPR_8347_REV11_PBGA 0x80350101
97#define SPR_8343E_REV11 0x80360101
98#define SPR_8343_REV11 0x80370101
99
100#define SPR_8360E_REV10 0x80480010
101#define SPR_8360_REV10 0x80490010
102#define SPR_8360E_REV11 0x80480011
103#define SPR_8360_REV11 0x80490011
104#define SPR_8360E_REV12 0x80480012
105#define SPR_8360_REV12 0x80490012
Eran Libertyf046ccd2005-07-28 10:08:46 -0500106
107/*
108 * Base Registers & Option Registers
109 */
110#define BR0 0x5000
111#define BR1 0x5008
112#define BR2 0x5010
113#define BR3 0x5018
114#define BR4 0x5020
115#define BR5 0x5028
116#define BR6 0x5030
117#define BR7 0x5038
118
Marian Balakowicze6f2e902005-10-11 19:09:42 +0200119#define BR_BA 0xFFFF8000
120#define BR_BA_SHIFT 15
121#define BR_PS 0x00001800
122#define BR_PS_SHIFT 11
123#define BR_PS_8 0x00000800 /* Port Size 8 bit */
124#define BR_PS_16 0x00001000 /* Port Size 16 bit */
125#define BR_PS_32 0x00001800 /* Port Size 32 bit */
126#define BR_DECC 0x00000600
127#define BR_DECC_SHIFT 9
128#define BR_WP 0x00000100
129#define BR_WP_SHIFT 8
130#define BR_MSEL 0x000000E0
131#define BR_MSEL_SHIFT 5
132#define BR_MS_GPCM 0x00000000 /* GPCM */
133#define BR_MS_SDRAM 0x00000060 /* SDRAM */
134#define BR_MS_UPMA 0x00000080 /* UPMA */
135#define BR_MS_UPMB 0x000000A0 /* UPMB */
136#define BR_MS_UPMC 0x000000C0 /* UPMC */
Dave Liu5f820432006-11-03 19:33:44 -0600137#if defined (CONFIG_MPC8360)
138#define BR_ATOM 0x0000000C
139#define BR_ATOM_SHIFT 2
140#endif
Marian Balakowicze6f2e902005-10-11 19:09:42 +0200141#define BR_V 0x00000001
142#define BR_V_SHIFT 0
Dave Liu5f820432006-11-03 19:33:44 -0600143#if defined (CONFIG_MPC8349)
Marian Balakowicze6f2e902005-10-11 19:09:42 +0200144#define BR_RES ~(BR_BA|BR_PS|BR_DECC|BR_WP|BR_MSEL|BR_V)
Dave Liu5f820432006-11-03 19:33:44 -0600145#elif defined (CONFIG_MPC8360)
146#define BR_RES ~(BR_BA|BR_PS|BR_DECC|BR_WP|BR_MSEL|BR_ATOM|BR_V)
147#endif
Eran Libertyf046ccd2005-07-28 10:08:46 -0500148
149#define OR0 0x5004
150#define OR1 0x500C
151#define OR2 0x5014
152#define OR3 0x501C
153#define OR4 0x5024
154#define OR5 0x502C
155#define OR6 0x5034
156#define OR7 0x503C
157
Marian Balakowicze6f2e902005-10-11 19:09:42 +0200158#define OR_GPCM_AM 0xFFFF8000
159#define OR_GPCM_AM_SHIFT 15
160#define OR_GPCM_BCTLD 0x00001000
161#define OR_GPCM_BCTLD_SHIFT 12
162#define OR_GPCM_CSNT 0x00000800
163#define OR_GPCM_CSNT_SHIFT 11
164#define OR_GPCM_ACS 0x00000600
165#define OR_GPCM_ACS_SHIFT 9
166#define OR_GPCM_ACS_0b10 0x00000400
167#define OR_GPCM_ACS_0b11 0x00000600
168#define OR_GPCM_XACS 0x00000100
169#define OR_GPCM_XACS_SHIFT 8
170#define OR_GPCM_SCY 0x000000F0
171#define OR_GPCM_SCY_SHIFT 4
172#define OR_GPCM_SCY_1 0x00000010
173#define OR_GPCM_SCY_2 0x00000020
174#define OR_GPCM_SCY_3 0x00000030
175#define OR_GPCM_SCY_4 0x00000040
176#define OR_GPCM_SCY_5 0x00000050
177#define OR_GPCM_SCY_6 0x00000060
178#define OR_GPCM_SCY_7 0x00000070
179#define OR_GPCM_SCY_8 0x00000080
180#define OR_GPCM_SCY_9 0x00000090
181#define OR_GPCM_SCY_10 0x000000a0
182#define OR_GPCM_SCY_11 0x000000b0
183#define OR_GPCM_SCY_12 0x000000c0
184#define OR_GPCM_SCY_13 0x000000d0
185#define OR_GPCM_SCY_14 0x000000e0
186#define OR_GPCM_SCY_15 0x000000f0
187#define OR_GPCM_SETA 0x00000008
188#define OR_GPCM_SETA_SHIFT 3
189#define OR_GPCM_TRLX 0x00000004
190#define OR_GPCM_TRLX_SHIFT 2
191#define OR_GPCM_EHTR 0x00000002
192#define OR_GPCM_EHTR_SHIFT 1
193#define OR_GPCM_EAD 0x00000001
194#define OR_GPCM_EAD_SHIFT 0
Eran Libertyf046ccd2005-07-28 10:08:46 -0500195
196#define OR_UPM_AM 0xFFFF8000
197#define OR_UPM_AM_SHIFT 15
198#define OR_UPM_XAM 0x00006000
199#define OR_UPM_XAM_SHIFT 13
200#define OR_UPM_BCTLD 0x00001000
201#define OR_UPM_BCTLD_SHIFT 12
202#define OR_UPM_BI 0x00000100
203#define OR_UPM_BI_SHIFT 8
204#define OR_UPM_TRLX 0x00000004
205#define OR_UPM_TRLX_SHIFT 2
206#define OR_UPM_EHTR 0x00000002
207#define OR_UPM_EHTR_SHIFT 1
208#define OR_UPM_EAD 0x00000001
209#define OR_UPM_EAD_SHIFT 0
210
211#define OR_SDRAM_AM 0xFFFF8000
212#define OR_SDRAM_AM_SHIFT 15
213#define OR_SDRAM_XAM 0x00006000
214#define OR_SDRAM_XAM_SHIFT 13
215#define OR_SDRAM_COLS 0x00001C00
216#define OR_SDRAM_COLS_SHIFT 10
217#define OR_SDRAM_ROWS 0x000001C0
218#define OR_SDRAM_ROWS_SHIFT 6
219#define OR_SDRAM_PMSEL 0x00000020
220#define OR_SDRAM_PMSEL_SHIFT 5
221#define OR_SDRAM_EAD 0x00000001
222#define OR_SDRAM_EAD_SHIFT 0
223
224/*
225 * Hard Reset Configration Word - High
Jon Loeligerde1d0a62005-08-01 13:20:47 -0500226 */
Eran Libertyf046ccd2005-07-28 10:08:46 -0500227#define HRCWH_PCI_AGENT 0x00000000
228#define HRCWH_PCI_HOST 0x80000000
229
Dave Liu5f820432006-11-03 19:33:44 -0600230#if defined (CONFIG_MPC8349)
Eran Libertyf046ccd2005-07-28 10:08:46 -0500231#define HRCWH_32_BIT_PCI 0x00000000
232#define HRCWH_64_BIT_PCI 0x40000000
Dave Liu5f820432006-11-03 19:33:44 -0600233#endif
Eran Libertyf046ccd2005-07-28 10:08:46 -0500234
235#define HRCWH_PCI1_ARBITER_DISABLE 0x00000000
236#define HRCWH_PCI1_ARBITER_ENABLE 0x20000000
237
Dave Liu5f820432006-11-03 19:33:44 -0600238#if defined (CONFIG_MPC8349)
Eran Libertyf046ccd2005-07-28 10:08:46 -0500239#define HRCWH_PCI2_ARBITER_DISABLE 0x00000000
240#define HRCWH_PCI2_ARBITER_ENABLE 0x10000000
Dave Liu5f820432006-11-03 19:33:44 -0600241#elif defined (CONFIG_MPC8360)
242#define HRCWH_PCICKDRV_DISABLE 0x00000000
243#define HRCWH_PCICKDRV_ENABLE 0x10000000
244#endif
Eran Libertyf046ccd2005-07-28 10:08:46 -0500245
246#define HRCWH_CORE_DISABLE 0x08000000
247#define HRCWH_CORE_ENABLE 0x00000000
248
249#define HRCWH_FROM_0X00000100 0x00000000
250#define HRCWH_FROM_0XFFF00100 0x04000000
251
252#define HRCWH_BOOTSEQ_DISABLE 0x00000000
253#define HRCWH_BOOTSEQ_NORMAL 0x01000000
254#define HRCWH_BOOTSEQ_EXTENDED 0x02000000
255
Jon Loeligerde1d0a62005-08-01 13:20:47 -0500256#define HRCWH_SW_WATCHDOG_DISABLE 0x00000000
257#define HRCWH_SW_WATCHDOG_ENABLE 0x00800000
Eran Libertyf046ccd2005-07-28 10:08:46 -0500258
259#define HRCWH_ROM_LOC_DDR_SDRAM 0x00000000
260#define HRCWH_ROM_LOC_PCI1 0x00100000
Dave Liu5f820432006-11-03 19:33:44 -0600261#if defined (CONFIG_MPC8349)
Eran Libertyf046ccd2005-07-28 10:08:46 -0500262#define HRCWH_ROM_LOC_PCI2 0x00200000
Dave Liu5f820432006-11-03 19:33:44 -0600263#endif
Eran Libertyf046ccd2005-07-28 10:08:46 -0500264#define HRCWH_ROM_LOC_LOCAL_8BIT 0x00500000
265#define HRCWH_ROM_LOC_LOCAL_16BIT 0x00600000
266#define HRCWH_ROM_LOC_LOCAL_32BIT 0x00700000
267
Dave Liu5f820432006-11-03 19:33:44 -0600268#if defined (CONFIG_MPC8349)
Eran Libertyf046ccd2005-07-28 10:08:46 -0500269#define HRCWH_TSEC1M_IN_RGMII 0x00000000
270#define HRCWH_TSEC1M_IN_RTBI 0x00004000
271#define HRCWH_TSEC1M_IN_GMII 0x00008000
272#define HRCWH_TSEC1M_IN_TBI 0x0000C000
273
274#define HRCWH_TSEC2M_IN_RGMII 0x00000000
275#define HRCWH_TSEC2M_IN_RTBI 0x00001000
276#define HRCWH_TSEC2M_IN_GMII 0x00002000
277#define HRCWH_TSEC2M_IN_TBI 0x00003000
Dave Liu5f820432006-11-03 19:33:44 -0600278#endif
279
280#if defined (CONFIG_MPC8360)
281#define HRCWH_SECONDARY_DDR_DISABLE 0x00000000
282#define HRCWH_SECONDARY_DDR_ENABLE 0x00000010
283#endif
Eran Libertyf046ccd2005-07-28 10:08:46 -0500284
285#define HRCWH_BIG_ENDIAN 0x00000000
286#define HRCWH_LITTLE_ENDIAN 0x00000008
287
Dave Liuf6eda7f2006-10-25 14:41:21 -0500288#define HRCWH_LALE_NORMAL 0x00000000
289#define HRCWH_LALE_EARLY 0x00000004
290
291#define HRCWH_LDP_SET 0x00000000
292#define HRCWH_LDP_CLEAR 0x00000002
293
Eran Libertyf046ccd2005-07-28 10:08:46 -0500294/*
295 * Hard Reset Configration Word - Low
296 */
297#define HRCWL_LCL_BUS_TO_SCB_CLK_1X1 0x00000000
298#define HRCWL_LCL_BUS_TO_SCB_CLK_2X1 0x80000000
299
300#define HRCWL_DDR_TO_SCB_CLK_1X1 0x00000000
301#define HRCWL_DDR_TO_SCB_CLK_2X1 0x40000000
302
303#define HRCWL_CSB_TO_CLKIN_16X1 0x00000000
304#define HRCWL_CSB_TO_CLKIN_1X1 0x01000000
305#define HRCWL_CSB_TO_CLKIN_2X1 0x02000000
306#define HRCWL_CSB_TO_CLKIN_3X1 0x03000000
307#define HRCWL_CSB_TO_CLKIN_4X1 0x04000000
308#define HRCWL_CSB_TO_CLKIN_5X1 0x05000000
309#define HRCWL_CSB_TO_CLKIN_6X1 0x06000000
310#define HRCWL_CSB_TO_CLKIN_7X1 0x07000000
311#define HRCWL_CSB_TO_CLKIN_8X1 0x08000000
312#define HRCWL_CSB_TO_CLKIN_9X1 0x09000000
313#define HRCWL_CSB_TO_CLKIN_10X1 0x0A000000
314#define HRCWL_CSB_TO_CLKIN_11X1 0x0B000000
315#define HRCWL_CSB_TO_CLKIN_12X1 0x0C000000
316#define HRCWL_CSB_TO_CLKIN_13X1 0x0D000000
317#define HRCWL_CSB_TO_CLKIN_14X1 0x0E000000
318#define HRCWL_CSB_TO_CLKIN_15X1 0x0F000000
319
320#define HRCWL_VCO_BYPASS 0x00000000
321#define HRCWL_VCO_1X2 0x00000000
322#define HRCWL_VCO_1X4 0x00200000
323#define HRCWL_VCO_1X8 0x00400000
324
325#define HRCWL_CORE_TO_CSB_BYPASS 0x00000000
326#define HRCWL_CORE_TO_CSB_1X1 0x00020000
327#define HRCWL_CORE_TO_CSB_1_5X1 0x00030000
328#define HRCWL_CORE_TO_CSB_2X1 0x00040000
329#define HRCWL_CORE_TO_CSB_2_5X1 0x00050000
330#define HRCWL_CORE_TO_CSB_3X1 0x00060000
331
Dave Liu5f820432006-11-03 19:33:44 -0600332#if defined (CONFIG_MPC8360)
333#define HRCWL_CE_PLL_VCO_DIV_4 0x00000000
334#define HRCWL_CE_PLL_VCO_DIV_8 0x00000040
335#define HRCWL_CE_PLL_VCO_DIV_2 0x00000080
336
337#define HRCWL_CE_PLL_DIV_1X1 0x00000000
338#define HRCWL_CE_PLL_DIV_2X1 0x00000020
339
340#define HRCWL_CE_TO_PLL_1X16_ 0x00000000
341#define HRCWL_CE_TO_PLL_1X2 0x00000002
342#define HRCWL_CE_TO_PLL_1X3 0x00000003
343#define HRCWL_CE_TO_PLL_1X4 0x00000004
344#define HRCWL_CE_TO_PLL_1X5 0x00000005
345#define HRCWL_CE_TO_PLL_1X6 0x00000006
346#define HRCWL_CE_TO_PLL_1X7 0x00000007
347#define HRCWL_CE_TO_PLL_1X8 0x00000008
348#define HRCWL_CE_TO_PLL_1X9 0x00000009
349#define HRCWL_CE_TO_PLL_1X10 0x0000000A
350#define HRCWL_CE_TO_PLL_1X11 0x0000000B
351#define HRCWL_CE_TO_PLL_1X12 0x0000000C
352#define HRCWL_CE_TO_PLL_1X13 0x0000000D
353#define HRCWL_CE_TO_PLL_1X14 0x0000000E
354#define HRCWL_CE_TO_PLL_1X15 0x0000000F
355#define HRCWL_CE_TO_PLL_1X16 0x00000010
356#define HRCWL_CE_TO_PLL_1X17 0x00000011
357#define HRCWL_CE_TO_PLL_1X18 0x00000012
358#define HRCWL_CE_TO_PLL_1X19 0x00000013
359#define HRCWL_CE_TO_PLL_1X20 0x00000014
360#define HRCWL_CE_TO_PLL_1X21 0x00000015
361#define HRCWL_CE_TO_PLL_1X22 0x00000016
362#define HRCWL_CE_TO_PLL_1X23 0x00000017
363#define HRCWL_CE_TO_PLL_1X24 0x00000018
364#define HRCWL_CE_TO_PLL_1X25 0x00000019
365#define HRCWL_CE_TO_PLL_1X26 0x0000001A
366#define HRCWL_CE_TO_PLL_1X27 0x0000001B
367#define HRCWL_CE_TO_PLL_1X28 0x0000001C
368#define HRCWL_CE_TO_PLL_1X29 0x0000001D
369#define HRCWL_CE_TO_PLL_1X30 0x0000001E
370#define HRCWL_CE_TO_PLL_1X31 0x0000001F
371#endif
372
Eran Libertyf046ccd2005-07-28 10:08:46 -0500373/*
Jon Loeligerde1d0a62005-08-01 13:20:47 -0500374 * LCRR - Clock Ratio Register (10.3.1.16)
Eran Libertyf046ccd2005-07-28 10:08:46 -0500375 */
376#define LCRR_DBYP 0x80000000
377#define LCRR_DBYP_SHIFT 31
378#define LCRR_BUFCMDC 0x30000000
379#define LCRR_BUFCMDC_1 0x10000000
380#define LCRR_BUFCMDC_2 0x20000000
381#define LCRR_BUFCMDC_3 0x30000000
382#define LCRR_BUFCMDC_4 0x00000000
383#define LCRR_BUFCMDC_SHIFT 28
384#define LCRR_ECL 0x03000000
385#define LCRR_ECL_4 0x00000000
386#define LCRR_ECL_5 0x01000000
387#define LCRR_ECL_6 0x02000000
388#define LCRR_ECL_7 0x03000000
389#define LCRR_ECL_SHIFT 24
390#define LCRR_EADC 0x00030000
391#define LCRR_EADC_1 0x00010000
392#define LCRR_EADC_2 0x00020000
393#define LCRR_EADC_3 0x00030000
394#define LCRR_EADC_4 0x00000000
395#define LCRR_EADC_SHIFT 16
396#define LCRR_CLKDIV 0x0000000F
397#define LCRR_CLKDIV_2 0x00000002
398#define LCRR_CLKDIV_4 0x00000004
399#define LCRR_CLKDIV_8 0x00000008
400#define LCRR_CLKDIV_SHIFT 0
Eran Libertyf046ccd2005-07-28 10:08:46 -0500401
Dave Liuf6eda7f2006-10-25 14:41:21 -0500402/*
403 * SCCR-System Clock Control Register
404 */
405#define SCCR_TSEC1CM_0 0x00000000
406#define SCCR_TSEC1CM_1 0x40000000
407#define SCCR_TSEC1CM_2 0x80000000
408#define SCCR_TSEC1CM_3 0xC0000000
409#define SCCR_TSEC2CM_0 0x00000000
410#define SCCR_TSEC2CM_1 0x10000000
411#define SCCR_TSEC2CM_2 0x20000000
412#define SCCR_TSEC2CM_3 0x30000000
413#define SCCR_ENCCM_0 0x00000000
414#define SCCR_ENCCM_1 0x01000000
415#define SCCR_ENCCM_2 0x02000000
416#define SCCR_ENCCM_3 0x03000000
417#define SCCR_USBCM_0 0x00000000
418#define SCCR_USBCM_1 0x00500000
419#define SCCR_USBCM_2 0x00A00000
420#define SCCR_USBCM_3 0x00F00000
421
422#define SCCR_CLK_MASK ( SCCR_TSEC1CM_3 \
423 | SCCR_TSEC2CM_3 \
424 | SCCR_ENCCM_3 \
425 | SCCR_USBCM_3 )
Dave Liu5f820432006-11-03 19:33:44 -0600426
Dave Liuf6eda7f2006-10-25 14:41:21 -0500427#define SCCR_DEFAULT 0xFFFFFFFF
428
Eran Libertyf046ccd2005-07-28 10:08:46 -0500429#endif /* __MPC83XX_H__ */