avr32: Rework SDRAM initialization code
This cleans up the SDRAM initialization and related code a bit, and
allows faster booting.
* Add definitions for EBI and internal SRAM to asm/arch/memory-map.h
* Remove memory test from sdram_init() and make caller responsible
for verifying the SDRAM and determining its size.
* Remove base_address member from struct sdram_config (was sdram_info)
* Add data_bits member to struct sdram_config and kill CFG_SDRAM_16BIT
* Add support for a common STK1000 hack: 16MB SDRAM instead of 8.
Signed-off-by: Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
This commit is contained in:
@@ -22,15 +22,32 @@
|
||||
#ifndef __ASM_AVR32_SDRAM_H
|
||||
#define __ASM_AVR32_SDRAM_H
|
||||
|
||||
struct sdram_info {
|
||||
unsigned long phys_addr;
|
||||
unsigned int row_bits, col_bits, bank_bits;
|
||||
unsigned int cas, twr, trc, trp, trcd, tras, txsr;
|
||||
struct sdram_config {
|
||||
/* Number of data bits. */
|
||||
enum {
|
||||
SDRAM_DATA_16BIT,
|
||||
SDRAM_DATA_32BIT,
|
||||
} data_bits;
|
||||
|
||||
/* Number of address bits */
|
||||
uint8_t row_bits, col_bits, bank_bits;
|
||||
|
||||
/* SDRAM timings in cycles */
|
||||
uint8_t cas, twr, trc, trp, trcd, tras, txsr;
|
||||
|
||||
/* SDRAM refresh period in cycles */
|
||||
unsigned long refresh_period;
|
||||
};
|
||||
|
||||
extern unsigned long sdram_init(const struct sdram_info *info);
|
||||
/*
|
||||
* Attempt to initialize the SDRAM controller using the specified
|
||||
* parameters. Return the expected size of the memory area based on
|
||||
* the number of address and data bits.
|
||||
*
|
||||
* The caller should verify that the configuration is correct by
|
||||
* running a memory test, e.g. get_ram_size().
|
||||
*/
|
||||
extern unsigned long sdram_init(void *sdram_base,
|
||||
const struct sdram_config *config);
|
||||
|
||||
#endif /* __ASM_AVR32_SDRAM_H */
|
||||
|
||||
Reference in New Issue
Block a user