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

Daniel Schwierzeck daniel.schwierzeck at gmail.com
Sat Apr 15 18:48:45 UTC 2017



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

-- 
- Daniel

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20170415/ecf87d91/attachment.sig>


More information about the U-Boot mailing list