Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0fa1f060 authored by Andrew Lunn's avatar Andrew Lunn Committed by Olof Johansson
Browse files

ARM: Orion: Fix Virtual/Physical mixup with watchdog



The orion watchdog is expecting to be passed the physcial address of
the hardware, and will ioremap() it to give a virtual address it will
use as the base address for the hardware. However, when creating the
platform resource record, a virtual address was being used.

Add the necassary #define's so we can pass the physical address as
expected.

Tested on Kirkwood and Orion5x.

Cc: stable <stable@vger.kernel.org>
Signed-off-by: default avatarAndrew Lunn <andrew@lunn.ch>
Signed-off-by: default avatarOlof Johansson <olof@lixom.net>
parent 5fb2ce11
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -38,6 +38,7 @@
#define IRQ_MASK_HIGH_OFF	0x0014
#define IRQ_MASK_HIGH_OFF	0x0014


#define TIMER_VIRT_BASE		(BRIDGE_VIRT_BASE | 0x0300)
#define TIMER_VIRT_BASE		(BRIDGE_VIRT_BASE | 0x0300)
#define TIMER_PHYS_BASE		(BRIDGE_PHYS_BASE | 0x0300)


#define L2_CONFIG_REG		(BRIDGE_VIRT_BASE | 0x0128)
#define L2_CONFIG_REG		(BRIDGE_VIRT_BASE | 0x0128)
#define L2_WRITETHROUGH		0x00000010
#define L2_WRITETHROUGH		0x00000010
+1 −0
Original line number Original line Diff line number Diff line
@@ -80,6 +80,7 @@
#define  UART1_VIRT_BASE	(DEV_BUS_VIRT_BASE | 0x2100)
#define  UART1_VIRT_BASE	(DEV_BUS_VIRT_BASE | 0x2100)


#define BRIDGE_VIRT_BASE	(KIRKWOOD_REGS_VIRT_BASE | 0x20000)
#define BRIDGE_VIRT_BASE	(KIRKWOOD_REGS_VIRT_BASE | 0x20000)
#define BRIDGE_PHYS_BASE	(KIRKWOOD_REGS_PHYS_BASE | 0x20000)


#define CRYPTO_PHYS_BASE	(KIRKWOOD_REGS_PHYS_BASE | 0x30000)
#define CRYPTO_PHYS_BASE	(KIRKWOOD_REGS_PHYS_BASE | 0x30000)


+1 −1
Original line number Original line Diff line number Diff line
@@ -35,5 +35,5 @@
#define MAIN_IRQ_MASK		(ORION5X_BRIDGE_VIRT_BASE | 0x204)
#define MAIN_IRQ_MASK		(ORION5X_BRIDGE_VIRT_BASE | 0x204)


#define TIMER_VIRT_BASE		(ORION5X_BRIDGE_VIRT_BASE | 0x300)
#define TIMER_VIRT_BASE		(ORION5X_BRIDGE_VIRT_BASE | 0x300)

#define TIMER_PHYS_BASE		(ORION5X_BRIDGE_PHYS_BASE | 0x300)
#endif
#endif
+1 −0
Original line number Original line Diff line number Diff line
@@ -82,6 +82,7 @@
#define  UART1_VIRT_BASE		(ORION5X_DEV_BUS_VIRT_BASE | 0x2100)
#define  UART1_VIRT_BASE		(ORION5X_DEV_BUS_VIRT_BASE | 0x2100)


#define ORION5X_BRIDGE_VIRT_BASE	(ORION5X_REGS_VIRT_BASE | 0x20000)
#define ORION5X_BRIDGE_VIRT_BASE	(ORION5X_REGS_VIRT_BASE | 0x20000)
#define ORION5X_BRIDGE_PHYS_BASE	(ORION5X_REGS_PHYS_BASE | 0x20000)


#define ORION5X_PCI_VIRT_BASE		(ORION5X_REGS_VIRT_BASE | 0x30000)
#define ORION5X_PCI_VIRT_BASE		(ORION5X_REGS_VIRT_BASE | 0x30000)


+1 −1
Original line number Original line Diff line number Diff line
@@ -582,7 +582,7 @@ void __init orion_spi_1_init(unsigned long mapbase)
 * Watchdog
 * Watchdog
 ****************************************************************************/
 ****************************************************************************/
static struct resource orion_wdt_resource =
static struct resource orion_wdt_resource =
		DEFINE_RES_MEM(TIMER_VIRT_BASE, 0x28);
		DEFINE_RES_MEM(TIMER_PHYS_BASE, 0x28);


static struct platform_device orion_wdt_device = {
static struct platform_device orion_wdt_device = {
	.name		= "orion_wdt",
	.name		= "orion_wdt",