Merge branch 'org.openembedded.dev' of git://git.openembedded.net/openembedded into...
[vuplus_openembedded] / packages / linux / linux-dm800 / linux-2.6.12-fixup-memsize.patch
1 Index: stblinux-2.6.12/arch/mips/kernel/setup.c
2 ===================================================================
3 --- stblinux-2.6.12.orig/arch/mips/kernel/setup.c       2008-04-15 02:13:42.000000000 +0200
4 +++ stblinux-2.6.12/arch/mips/kernel/setup.c    2008-04-15 02:25:13.000000000 +0200
5 @@ -472,11 +472,29 @@
6   */
7  unsigned long get_RAM_size(void);
8  
9 +extern int *_prom_envp;
10 +#define prom_envp(index) ((char *)(long)_prom_envp[(index)])
11 +static char *prom_getenv(char *envname)
12 +{
13 +       int i, index=0;
14 +
15 +       i = strlen(envname);
16 +
17 +       while (prom_envp(index)) {
18 +               if ((strncmp(envname, prom_envp(index), i) == 0) && (prom_envp(index)[i] == '='))
19 +                       return(prom_envp(index) + i + 1);
20 +               index++;
21 +       }
22 +
23 +       return NULL;
24 +}
25 +
26  static inline void brcm_default_boot_mem(void)
27  {
28         int ramSizeMB = get_RAM_size() >> 20;
29         int size;
30         char msg[40];
31 +       const char *memsize_str;
32         
33         if (ramSizeMB <= 32) 
34         {
35 @@ -502,11 +520,20 @@
36                 size = 32;
37  #endif
38         }
39 -       sprintf(msg, "Using %dMB for memory, overwrite by passing mem=xx\n", 
40 -                                       size);
41 -       uart_puts(msg);
42 -        brcm_insert_ram_node(0, size<<20, BOOT_MEM_RAM, &brcm_bm);
43  
44 +       memsize_str = prom_getenv("memsize");
45 +       if (memsize_str)
46 +       {
47 +               int memsize = simple_strtol(memsize_str, NULL, 0);
48 +               brcm_insert_ram_node(0, memsize<<20, BOOT_MEM_RAM, &brcm_bm);
49 +               printk("---> memsize from bootloader: %d\n", memsize);
50 +       } else
51 +       {
52 +               sprintf(msg, "Using %dMB for memory, overwrite by passing mem=xx\n", 
53 +                                               size);
54 +               uart_puts(msg);
55 +               brcm_insert_ram_node(0, size<<20, BOOT_MEM_RAM, &brcm_bm);
56 +       }
57  }
58  
59