1/* SPDX-License-Identifier: GPL-2.0+ */ 2/* 3 * Copyright (C) 2011 by Vladimir Zapolskiy <vz@mleia.com> 4 */ 5 6#ifndef _LPC32XX_EMC_H 7#define _LPC32XX_EMC_H 8 9#include <asm/types.h> 10 11/* EMC Registers */ 12struct emc_regs { 13 u32 ctrl; /* Controls operation of the EMC */ 14 u32 status; /* Provides EMC status information */ 15 u32 config; /* Configures operation of the EMC */ 16 u32 reserved0[5]; 17 u32 control; /* Controls dyn memory operation */ 18 u32 refresh; /* Configures dyn memory refresh operation */ 19 u32 read_config; /* Configures the dyn memory read strategy */ 20 u32 reserved1; 21 u32 t_rp; /* Precharge command period */ 22 u32 t_ras; /* Active to precharge command period */ 23 u32 t_srex; /* Self-refresh exit time */ 24 u32 reserved2[2]; 25 u32 t_wr; /* Write recovery time */ 26 u32 t_rc; /* Active to active command period */ 27 u32 t_rfc; /* Auto-refresh period */ 28 u32 t_xsr; /* Exit self-refresh to active command time */ 29 u32 t_rrd; /* Active bank A to active bank B latency */ 30 u32 t_mrd; /* Load mode register to active command time */ 31 u32 t_cdlr; /* Last data in to read command time */ 32 u32 reserved3[8]; 33 u32 extended_wait; /* time for static memory rd/wr transfers */ 34 u32 reserved4[31]; 35 u32 config0; /* Configuration information for the SDRAM */ 36 u32 rascas0; /* RAS and CAS latencies for the SDRAM */ 37 u32 reserved5[6]; 38 u32 config1; /* Configuration information for the SDRAM */ 39 u32 rascas1; /* RAS and CAS latencies for the SDRAM */ 40 u32 reserved6[54]; 41 struct emc_stat_t { 42 u32 config; /* Static memory configuration */ 43 u32 waitwen; /* Delay from chip select to write enable */ 44 u32 waitoen; /* Delay to output enable */ 45 u32 waitrd; /* Delay to a read access */ 46 u32 waitpage; /* Delay for async page mode read */ 47 u32 waitwr; /* Delay to a write access */ 48 u32 waitturn; /* Number of bus turnaround cycles */ 49 u32 reserved; 50 } stat[4]; 51 u32 reserved7[96]; 52 struct emc_ahb_t { 53 u32 control; /* Control register for AHB */ 54 u32 status; /* Status register for AHB */ 55 u32 timeout; /* Timeout register for AHB */ 56 u32 reserved[5]; 57 } ahb[5]; 58}; 59 60/* Static Memory Configuration Register bits */ 61#define EMC_STAT_CONFIG_WP (1 << 20) 62#define EMC_STAT_CONFIG_EW (1 << 8) 63#define EMC_STAT_CONFIG_PB (1 << 7) 64#define EMC_STAT_CONFIG_PC (1 << 6) 65#define EMC_STAT_CONFIG_PM (1 << 3) 66#define EMC_STAT_CONFIG_32BIT (2 << 0) 67#define EMC_STAT_CONFIG_16BIT (1 << 0) 68#define EMC_STAT_CONFIG_8BIT (0 << 0) 69 70/* Static Memory Delay Registers */ 71#define EMC_STAT_WAITWEN(n) (((n) - 1) & 0x0F) 72#define EMC_STAT_WAITOEN(n) ((n) & 0x0F) 73#define EMC_STAT_WAITRD(n) (((n) - 1) & 0x1F) 74#define EMC_STAT_WAITPAGE(n) (((n) - 1) & 0x1F) 75#define EMC_STAT_WAITWR(n) (((n) - 2) & 0x1F) 76#define EMC_STAT_WAITTURN(n) (((n) - 1) & 0x0F) 77 78/* EMC settings for DRAM */ 79struct emc_dram_settings { 80 u32 cmddelay; 81 u32 config0; 82 u32 rascas0; 83 u32 rdconfig; 84 u32 trp; 85 u32 tras; 86 u32 tsrex; 87 u32 twr; 88 u32 trc; 89 u32 trfc; 90 u32 txsr; 91 u32 trrd; 92 u32 tmrd; 93 u32 tcdlr; 94 u32 refresh; 95 u32 mode; 96 u32 emode; 97}; 98 99#endif /* _LPC32XX_EMC_H */ 100