forked from Minki/linux
7b9334215f
The Broadcom BCM3368 Cable Modem SoC is extremely similar to the existing BCM63xx DSL SoCs, in particular BCM6358, therefore little effort in the existing code base is required to get it supported. This patch adds support for the following on-chip peripherals: - two UARTS - GPIO - Ethernet - SPI - PCI - NOR Flash The most noticeable difference with 3368 is that it has its peripheral register at 0xfff8_0000 we check that separately in ioremap.h. Since 3368 is identical to 6358 for its clock and reset bits, we use them verbatim. Signed-off-by: Florian Fainelli <florian@openwrt.org> Cc: linux-mips@linux-mips.org Cc: cernekee@gmail.com Cc: jogo@openwrt.org Patchwork: https://patchwork.linux-mips.org/patch/5499/ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
49 lines
1002 B
C
49 lines
1002 B
C
#ifndef BCM63XX_IOREMAP_H_
|
|
#define BCM63XX_IOREMAP_H_
|
|
|
|
#include <bcm63xx_cpu.h>
|
|
|
|
static inline phys_t fixup_bigphys_addr(phys_t phys_addr, phys_t size)
|
|
{
|
|
return phys_addr;
|
|
}
|
|
|
|
static inline int is_bcm63xx_internal_registers(phys_t offset)
|
|
{
|
|
switch (bcm63xx_get_cpu_id()) {
|
|
case BCM3368_CPU_ID:
|
|
if (offset >= 0xfff80000)
|
|
return 1;
|
|
break;
|
|
case BCM6338_CPU_ID:
|
|
case BCM6345_CPU_ID:
|
|
case BCM6348_CPU_ID:
|
|
case BCM6358_CPU_ID:
|
|
if (offset >= 0xfff00000)
|
|
return 1;
|
|
break;
|
|
case BCM6328_CPU_ID:
|
|
case BCM6362_CPU_ID:
|
|
case BCM6368_CPU_ID:
|
|
if (offset >= 0xb0000000 && offset < 0xb1000000)
|
|
return 1;
|
|
break;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static inline void __iomem *plat_ioremap(phys_t offset, unsigned long size,
|
|
unsigned long flags)
|
|
{
|
|
if (is_bcm63xx_internal_registers(offset))
|
|
return (void __iomem *)offset;
|
|
return NULL;
|
|
}
|
|
|
|
static inline int plat_iounmap(const volatile void __iomem *addr)
|
|
{
|
|
return is_bcm63xx_internal_registers((unsigned long)addr);
|
|
}
|
|
|
|
#endif /* BCM63XX_IOREMAP_H_ */
|