| Date: | 2011-05-01 01:57:23 (2 years 24 days ago) |
|---|---|
| Author: | Maarten ter Huurne |
| Commit: | a5e25d7fc72ff36d76da86c5f82f42c810ed0381 |
| Message: | MIPS: JZ4740: setup: Autodetect physical memory. Assume that the boot loader knows the physical memory of the system and deduce that information from the contents of the SDRAM control register. It is still possible to override with with the "mem=" parameter, but we have a sensible default now. |
| Files: |
arch/mips/jz4740/setup.c (2 diffs) |
Change Details
| arch/mips/jz4740/setup.c | ||
|---|---|---|
| 1 | 1 | /* |
| 2 | 2 | * Copyright (C) 2009-2010, Lars-Peter Clausen <lars@metafoo.de> |
| 3 | * Copyright (C) 2011, Maarten ter Huurne <maarten@treewalker.org> | |
| 3 | 4 | * JZ4740 setup code |
| 4 | 5 | * |
| 5 | 6 | * This program is free software; you can redistribute it and/or modify it |
| ... | ... | |
| 14 | 15 | */ |
| 15 | 16 | |
| 16 | 17 | #include <linux/init.h> |
| 18 | #include <linux/io.h> | |
| 17 | 19 | #include <linux/kernel.h> |
| 18 | 20 | |
| 21 | #include <asm/bootinfo.h> | |
| 22 | ||
| 23 | #include <asm/mach-jz4740/base.h> | |
| 24 | ||
| 19 | 25 | #include "reset.h" |
| 20 | 26 | |
| 27 | ||
| 28 | #define JZ4740_EMC_SDRAM_CTRL 0x80 | |
| 29 | ||
| 30 | ||
| 31 | static void __init jz4740_detect_mem(void) | |
| 32 | { | |
| 33 | void __iomem *jz_emc_base; | |
| 34 | u32 ctrl, bus, bank, rows, cols; | |
| 35 | phys_t size; | |
| 36 | ||
| 37 | jz_emc_base = ioremap(JZ4740_EMC_BASE_ADDR, 0x100); | |
| 38 | ctrl = readl(jz_emc_base + JZ4740_EMC_SDRAM_CTRL); | |
| 39 | bus = 2 - ((ctrl >> 31) & 1); | |
| 40 | bank = 1 + ((ctrl >> 19) & 1); | |
| 41 | cols = 8 + ((ctrl >> 26) & 7); | |
| 42 | rows = 11 + ((ctrl >> 20) & 3); | |
| 43 | printk(KERN_DEBUG | |
| 44 | "SDRAM preconfigured: bus:%u bank:%u rows:%u cols:%u\n", | |
| 45 | bus, bank, rows, cols); | |
| 46 | iounmap(jz_emc_base); | |
| 47 | ||
| 48 | size = 1 << (bus + bank + cols + rows); | |
| 49 | add_memory_region(0, size, BOOT_MEM_RAM); | |
| 50 | } | |
| 51 | ||
| 21 | 52 | void __init plat_mem_setup(void) |
| 22 | 53 | { |
| 23 | 54 | jz4740_reset_init(); |
| 55 | jz4740_detect_mem(); | |
| 24 | 56 | } |
| 25 | 57 | |
| 26 | 58 | const char *get_system_type(void) |
Branches:
ben-wpan
ben-wpan-stefan
5396a9238205f20f811ea57898980d3ca82df0b6
jz-2.6.34
jz-2.6.34-rc5
jz-2.6.34-rc6
jz-2.6.34-rc7
jz-2.6.35
jz-2.6.36
jz-2.6.37
jz-2.6.38
jz-2.6.39
jz-3.0
jz-3.1
jz-3.2
jz-3.3
jz-3.4
jz-3.5
jz-3.6
jz-3.6-rc2-pwm
jz-3.9
jz-3.9-clk
jz-3.9-rc8
jz47xx
jz47xx-2.6.38
master
Tags:
od-2011-09-04
od-2011-09-18
v2.6.34-rc5
v2.6.34-rc6
v2.6.34-rc7
v3.9
