diff options
| -rw-r--r-- | board/raspberrypi/rpi_b/rpi_b.c | 21 | 
1 files changed, 20 insertions, 1 deletions
| diff --git a/board/raspberrypi/rpi_b/rpi_b.c b/board/raspberrypi/rpi_b/rpi_b.c index 688b0aade..3c654a1ac 100644 --- a/board/raspberrypi/rpi_b/rpi_b.c +++ b/board/raspberrypi/rpi_b/rpi_b.c @@ -15,13 +15,32 @@   */  #include <common.h> +#include <asm/arch/mbox.h>  #include <asm/global_data.h>  DECLARE_GLOBAL_DATA_PTR; +struct msg_get_arm_mem { +	struct bcm2835_mbox_hdr hdr; +	struct bcm2835_mbox_tag_get_arm_mem get_arm_mem; +	u32 end_tag; +}; +  int dram_init(void)  { -	gd->ram_size = CONFIG_SYS_SDRAM_SIZE; +	ALLOC_ALIGN_BUFFER(struct msg_get_arm_mem, msg, 1, 16); +	int ret; + +	BCM2835_MBOX_INIT_HDR(msg); +	BCM2835_MBOX_INIT_TAG(&msg->get_arm_mem, GET_ARM_MEMORY); + +	ret = bcm2835_mbox_call_prop(BCM2835_MBOX_PROP_CHAN, &msg->hdr); +	if (ret) { +		printf("bcm2835: Could not query ARM memory size\n"); +		return -1; +	} + +	gd->ram_size = msg->get_arm_mem.body.resp.mem_size;  	return 0;  } |