Date:2011-05-01 01:57:23 (9 years 2 months 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
11/*
22 * Copyright (C) 2009-2010, Lars-Peter Clausen <lars@metafoo.de>
3 * Copyright (C) 2011, Maarten ter Huurne <maarten@treewalker.org>
34 * JZ4740 setup code
45 *
56 * This program is free software; you can redistribute it and/or modify it
...... 
1415 */
1516
1617#include <linux/init.h>
18#include <linux/io.h>
1719#include <linux/kernel.h>
1820
21#include <asm/bootinfo.h>
22
23#include <asm/mach-jz4740/base.h>
24
1925#include "reset.h"
2026
27
28#define JZ4740_EMC_SDRAM_CTRL 0x80
29
30
31static 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
2152void __init plat_mem_setup(void)
2253{
2354    jz4740_reset_init();
55    jz4740_detect_mem();
2456}
2557
2658const char *get_system_type(void)

Archive Download the corresponding diff file



interactive