[U-Boot] [PATCH 7/8] mips: bmips: fix ioremap for BCM6358

Álvaro Fernández Rojas noltari at gmail.com
Sat Apr 15 19:15:34 UTC 2017


Hi,

El 15/04/2017 a las 20:48, Daniel Schwierzeck escribió:
> 
> 
> Am 15.04.2017 um 20:08 schrieb Álvaro Fernández Rojas:
>> Hi again,
>>
>> El 15/04/2017 a las 19:18, Álvaro Fernández Rojas escribió:
>>> Hi Daniel,
>>>
>>> El 14/04/2017 a las 20:26, Daniel Schwierzeck escribió:
>>>>
>>>>
>>>> Am 13.04.2017 um 17:52 schrieb Álvaro Fernández Rojas:
>>>>> BCM6358 has its internal registers mapped to 0xfffe0000, which is changed to
>>>>> 0x1ffe0000 when ioremap is called.
>>>>>
>>>>> Signed-off-by: Álvaro Fernández Rojas <noltari at gmail.com>
>>>>> ---
>>>>>  arch/mips/include/asm/mach-generic/ioremap.h | 15 ++++++++++++++-
>>>>>  1 file changed, 14 insertions(+), 1 deletion(-)
>>>>>
>>>>> diff --git a/arch/mips/include/asm/mach-generic/ioremap.h b/arch/mips/include/asm/mach-generic/ioremap.h
>>>>> index 6b191d5..b6a920d 100644
>>>>> --- a/arch/mips/include/asm/mach-generic/ioremap.h
>>>>> +++ b/arch/mips/include/asm/mach-generic/ioremap.h
>>>>> @@ -16,15 +16,28 @@ static inline phys_addr_t fixup_bigphys_addr(phys_addr_t phys_addr,
>>>>>  	return phys_addr;
>>>>>  }
>>>>>  
>>>>> +static inline int is_mips_internal_registers(phys_addr_t offset)
>>>>> +{
>>>>> +#ifdef CONFIG_SOC_BMIPS_BCM6358
>>>>> +	if (offset >= 0xfffe0000)
>>>>> +		return 1;
>>>>> +#endif
>>>>> +
>>>>> +	return 0;
>>>>> +}
>>>>> +
>>>>>  static inline void __iomem *plat_ioremap(phys_addr_t offset, unsigned long size,
>>>>>  						unsigned long flags)
>>>>>  {
>>>>> +	if (is_mips_internal_registers(offset))
>>>>> +		return (void __iomem *)offset;
>>>>> +
>>>>>  	return NULL;
>>>>>  }
>>>>>  
>>>>>  static inline int plat_iounmap(const volatile void __iomem *addr)
>>>>>  {
>>>>> -	return 0;
>>>>> +	return is_mips_internal_registers((unsigned long)addr);
>>>>>  }
>>>>>  
>>>>>  #define _page_cachable_default	_CACHE_CACHABLE_NONCOHERENT
>>>>>
>>>>
>>>> please create a separate ioremap.h in arch/mips/include/asm/mach-bmips/
>>>> with the BMIPS specific code. Then this file will be automatically used
>>>> instead of the generic version. This is working like in Linux kernel.
>>> I will try, but I remember having tested that and I couldn't get it working...
>> Nope, it doesn't work...
>>
> 
> sorry, my fault. The correct path is arch/mips/mach-bmips/include/ioremap.h
> 
> Following commit on top of your series works for me:
> http://git.denx.de/?p=u-boot/u-boot-mips.git;a=commitdiff;h=5f98514bc09d4748ddf7ccc70bd4df0c7b36dd75
Great, it's working now :)

> 


More information about the U-Boot mailing list