[U-Boot] [PATCH] drivers:net:fsl-mc: Update MC address calculation
york.sun at nxp.com
Fri Aug 11 16:05:34 UTC 2017
On 08/10/2017 10:46 PM, Priyanka Jain wrote:
>> -----Original Message-----
>> From: York Sun
>> Sent: Wednesday, August 09, 2017 10:19 PM
>> To: Priyanka Jain <priyanka.jain at nxp.com>; u-boot at lists.denx.de
>> Cc: Ashish Kumar <ashish.kumar at nxp.com>
>> Subject: Re: [PATCH] drivers:net:fsl-mc: Update MC address calculation
>> On 06/23/2017 03:30 AM, Priyanka Jain wrote:
>>> Update MC address caluclation as per MC design requirement of address
>>> as least significant 512MB address of MC private allocated memory.
>>> Signed-off-by: Priyanka Jain <priyanka.jain at nxp.com>
>>> Signed-off-by: Ashish Kumar <ashish.kumar at nxp.com>
>>> drivers/net/fsl-mc/mc.c | 7 ++++++-
>>> 1 files changed, 6 insertions(+), 1 deletions(-)
>>> diff --git a/drivers/net/fsl-mc/mc.c b/drivers/net/fsl-mc/mc.c index
>>> eeecb2d..623586c 100644
>>> --- a/drivers/net/fsl-mc/mc.c
>>> +++ b/drivers/net/fsl-mc/mc.c
>>> @@ -704,10 +704,15 @@ int get_dpl_apply_status(void)
>>> * Return the MC address of private DRAM block.
>>> + * MC address should be least significant 512MB address
>>> + * of MC private memory
>>> u64 mc_get_dram_addr(void)
>>> - return gd->arch.resv_ram;
>>> + size_t mc_ram_size = mc_get_dram_block_size();
>>> + return (gd->arch.resv_ram + mc_ram_size - 1) &
>>> + MC_RAM_BASE_ADDR_ALIGNMENT_MASK;
>> This looks odd. You already have the address aligned by
>> CONFIG_SYS_MC_RSV_MEM_ALIGN (512MB by default), tracked by
>> gd->arch.resv_ram. Did you find the address is wrong sometimes?
> As per MC design requirement, MC memory should be 512MB aligned for which start address is gd->arch.resv_ram.
> But the MC core’s initial boot address should not contain start address. It must be located in the least significant 512MB of its address range.
> So this change is basically shifting address from start of memory towards end of Memory (which is least significant 512MB address).
You confused me. The reserved memory tracked by gd->arch.resv_ram is the
beginning of the memory, aligned to 512MB (CONFIG_SYS_MC_RSV_MEM_ALIGN).
It is naturally the lowest address in the reserved block. Isn't it
"least significant"? If this involves complicated address allocation,
please follow up with me for in-depth internal discussion.
More information about the U-Boot