mirror of
https://github.com/torvalds/linux.git
synced 2024-11-07 12:41:55 +00:00
arm: mach-kirkwood: use IOMEM() for base address definitions
We now define all virtual base address constants using IOMEM() so that those are naturally typed as void __iomem pointers, and we do the necessary adjustements in the mach-kirkwood code. Note that we introduce a few temporary additional "unsigned long" casts when calling into plat-orion functions. Those are removed by followup patches converting plat-orion functions to void __iomem pointers as well. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Acked-by: Arnd Bergmann <arnd@arndb.de> Tested-by: Andrew Lunn <andrew@lunn.ch> Signed-off-by: Jason Cooper <jason@lakedaemon.net>
This commit is contained in:
parent
c3c5a2815d
commit
060f3d191b
@ -41,7 +41,7 @@
|
|||||||
static struct __initdata orion_addr_map_cfg addr_map_cfg = {
|
static struct __initdata orion_addr_map_cfg addr_map_cfg = {
|
||||||
.num_wins = 8,
|
.num_wins = 8,
|
||||||
.remappable_wins = 4,
|
.remappable_wins = 4,
|
||||||
.bridge_virt_base = BRIDGE_VIRT_BASE,
|
.bridge_virt_base = (unsigned long) BRIDGE_VIRT_BASE,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct __initdata orion_addr_map_info addr_map_info[] = {
|
static const struct __initdata orion_addr_map_info addr_map_info[] = {
|
||||||
|
@ -42,17 +42,17 @@
|
|||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
static struct map_desc kirkwood_io_desc[] __initdata = {
|
static struct map_desc kirkwood_io_desc[] __initdata = {
|
||||||
{
|
{
|
||||||
.virtual = KIRKWOOD_PCIE_IO_VIRT_BASE,
|
.virtual = (unsigned long) KIRKWOOD_PCIE_IO_VIRT_BASE,
|
||||||
.pfn = __phys_to_pfn(KIRKWOOD_PCIE_IO_PHYS_BASE),
|
.pfn = __phys_to_pfn(KIRKWOOD_PCIE_IO_PHYS_BASE),
|
||||||
.length = KIRKWOOD_PCIE_IO_SIZE,
|
.length = KIRKWOOD_PCIE_IO_SIZE,
|
||||||
.type = MT_DEVICE,
|
.type = MT_DEVICE,
|
||||||
}, {
|
}, {
|
||||||
.virtual = KIRKWOOD_PCIE1_IO_VIRT_BASE,
|
.virtual = (unsigned long) KIRKWOOD_PCIE1_IO_VIRT_BASE,
|
||||||
.pfn = __phys_to_pfn(KIRKWOOD_PCIE1_IO_PHYS_BASE),
|
.pfn = __phys_to_pfn(KIRKWOOD_PCIE1_IO_PHYS_BASE),
|
||||||
.length = KIRKWOOD_PCIE1_IO_SIZE,
|
.length = KIRKWOOD_PCIE1_IO_SIZE,
|
||||||
.type = MT_DEVICE,
|
.type = MT_DEVICE,
|
||||||
}, {
|
}, {
|
||||||
.virtual = KIRKWOOD_REGS_VIRT_BASE,
|
.virtual = (unsigned long) KIRKWOOD_REGS_VIRT_BASE,
|
||||||
.pfn = __phys_to_pfn(KIRKWOOD_REGS_PHYS_BASE),
|
.pfn = __phys_to_pfn(KIRKWOOD_REGS_PHYS_BASE),
|
||||||
.length = KIRKWOOD_REGS_SIZE,
|
.length = KIRKWOOD_REGS_SIZE,
|
||||||
.type = MT_DEVICE,
|
.type = MT_DEVICE,
|
||||||
@ -215,8 +215,7 @@ static struct clk *tclk;
|
|||||||
|
|
||||||
static struct clk __init *kirkwood_register_gate(const char *name, u8 bit_idx)
|
static struct clk __init *kirkwood_register_gate(const char *name, u8 bit_idx)
|
||||||
{
|
{
|
||||||
return clk_register_gate(NULL, name, "tclk", 0,
|
return clk_register_gate(NULL, name, "tclk", 0, CLOCK_GATING_CTRL,
|
||||||
(void __iomem *)CLOCK_GATING_CTRL,
|
|
||||||
bit_idx, 0, &gating_lock);
|
bit_idx, 0, &gating_lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -225,8 +224,7 @@ static struct clk __init *kirkwood_register_gate_fn(const char *name,
|
|||||||
void (*fn_en)(void),
|
void (*fn_en)(void),
|
||||||
void (*fn_dis)(void))
|
void (*fn_dis)(void))
|
||||||
{
|
{
|
||||||
return clk_register_gate_fn(NULL, name, "tclk", 0,
|
return clk_register_gate_fn(NULL, name, "tclk", 0, CLOCK_GATING_CTRL,
|
||||||
(void __iomem *)CLOCK_GATING_CTRL,
|
|
||||||
bit_idx, 0, &gating_lock, fn_en, fn_dis);
|
bit_idx, 0, &gating_lock, fn_en, fn_dis);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -458,7 +456,8 @@ void __init kirkwood_i2c_init(void)
|
|||||||
|
|
||||||
void __init kirkwood_uart0_init(void)
|
void __init kirkwood_uart0_init(void)
|
||||||
{
|
{
|
||||||
orion_uart0_init(UART0_VIRT_BASE, UART0_PHYS_BASE,
|
orion_uart0_init((unsigned long) UART0_VIRT_BASE,
|
||||||
|
UART0_PHYS_BASE,
|
||||||
IRQ_KIRKWOOD_UART_0, tclk);
|
IRQ_KIRKWOOD_UART_0, tclk);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -468,7 +467,8 @@ void __init kirkwood_uart0_init(void)
|
|||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
void __init kirkwood_uart1_init(void)
|
void __init kirkwood_uart1_init(void)
|
||||||
{
|
{
|
||||||
orion_uart1_init(UART1_VIRT_BASE, UART1_PHYS_BASE,
|
orion_uart1_init((unsigned long) UART1_VIRT_BASE,
|
||||||
|
UART1_PHYS_BASE,
|
||||||
IRQ_KIRKWOOD_UART_1, tclk);
|
IRQ_KIRKWOOD_UART_1, tclk);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -516,7 +516,7 @@ void __init kirkwood_wdt_init(void)
|
|||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
void __init kirkwood_init_early(void)
|
void __init kirkwood_init_early(void)
|
||||||
{
|
{
|
||||||
orion_time_set_base(TIMER_VIRT_BASE);
|
orion_time_set_base((unsigned long) TIMER_VIRT_BASE);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Some Kirkwood devices allocate their coherent buffers from atomic
|
* Some Kirkwood devices allocate their coherent buffers from atomic
|
||||||
@ -545,7 +545,8 @@ static void __init kirkwood_timer_init(void)
|
|||||||
{
|
{
|
||||||
kirkwood_tclk = kirkwood_find_tclk();
|
kirkwood_tclk = kirkwood_find_tclk();
|
||||||
|
|
||||||
orion_time_init(BRIDGE_VIRT_BASE, BRIDGE_INT_TIMER1_CLR,
|
orion_time_init((unsigned long) BRIDGE_VIRT_BASE,
|
||||||
|
BRIDGE_INT_TIMER1_CLR,
|
||||||
IRQ_KIRKWOOD_BRIDGE, kirkwood_tclk);
|
IRQ_KIRKWOOD_BRIDGE, kirkwood_tclk);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -37,17 +37,17 @@
|
|||||||
#define KIRKWOOD_NAND_MEM_SIZE SZ_1K
|
#define KIRKWOOD_NAND_MEM_SIZE SZ_1K
|
||||||
|
|
||||||
#define KIRKWOOD_PCIE1_IO_PHYS_BASE 0xf3000000
|
#define KIRKWOOD_PCIE1_IO_PHYS_BASE 0xf3000000
|
||||||
#define KIRKWOOD_PCIE1_IO_VIRT_BASE 0xfef00000
|
#define KIRKWOOD_PCIE1_IO_VIRT_BASE IOMEM(0xfef00000)
|
||||||
#define KIRKWOOD_PCIE1_IO_BUS_BASE 0x00100000
|
#define KIRKWOOD_PCIE1_IO_BUS_BASE 0x00100000
|
||||||
#define KIRKWOOD_PCIE1_IO_SIZE SZ_1M
|
#define KIRKWOOD_PCIE1_IO_SIZE SZ_1M
|
||||||
|
|
||||||
#define KIRKWOOD_PCIE_IO_PHYS_BASE 0xf2000000
|
#define KIRKWOOD_PCIE_IO_PHYS_BASE 0xf2000000
|
||||||
#define KIRKWOOD_PCIE_IO_VIRT_BASE 0xfee00000
|
#define KIRKWOOD_PCIE_IO_VIRT_BASE IOMEM(0xfee00000)
|
||||||
#define KIRKWOOD_PCIE_IO_BUS_BASE 0x00000000
|
#define KIRKWOOD_PCIE_IO_BUS_BASE 0x00000000
|
||||||
#define KIRKWOOD_PCIE_IO_SIZE SZ_1M
|
#define KIRKWOOD_PCIE_IO_SIZE SZ_1M
|
||||||
|
|
||||||
#define KIRKWOOD_REGS_PHYS_BASE 0xf1000000
|
#define KIRKWOOD_REGS_PHYS_BASE 0xf1000000
|
||||||
#define KIRKWOOD_REGS_VIRT_BASE 0xfed00000
|
#define KIRKWOOD_REGS_VIRT_BASE IOMEM(0xfed00000)
|
||||||
#define KIRKWOOD_REGS_SIZE SZ_1M
|
#define KIRKWOOD_REGS_SIZE SZ_1M
|
||||||
|
|
||||||
#define KIRKWOOD_PCIE_MEM_PHYS_BASE 0xe0000000
|
#define KIRKWOOD_PCIE_MEM_PHYS_BASE 0xe0000000
|
||||||
|
@ -10,6 +10,7 @@
|
|||||||
#include <linux/gpio.h>
|
#include <linux/gpio.h>
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
#include <linux/irq.h>
|
#include <linux/irq.h>
|
||||||
|
#include <linux/io.h>
|
||||||
#include <mach/bridge-regs.h>
|
#include <mach/bridge-regs.h>
|
||||||
#include <plat/irq.h>
|
#include <plat/irq.h>
|
||||||
|
|
||||||
@ -29,14 +30,14 @@ static int __initdata gpio1_irqs[4] = {
|
|||||||
|
|
||||||
void __init kirkwood_init_irq(void)
|
void __init kirkwood_init_irq(void)
|
||||||
{
|
{
|
||||||
orion_irq_init(0, (void __iomem *)(IRQ_VIRT_BASE + IRQ_MASK_LOW_OFF));
|
orion_irq_init(0, IRQ_VIRT_BASE + IRQ_MASK_LOW_OFF);
|
||||||
orion_irq_init(32, (void __iomem *)(IRQ_VIRT_BASE + IRQ_MASK_HIGH_OFF));
|
orion_irq_init(32, IRQ_VIRT_BASE + IRQ_MASK_HIGH_OFF);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Initialize gpiolib for GPIOs 0-49.
|
* Initialize gpiolib for GPIOs 0-49.
|
||||||
*/
|
*/
|
||||||
orion_gpio_init(NULL, 0, 32, (void __iomem *)GPIO_LOW_VIRT_BASE, 0,
|
orion_gpio_init(NULL, 0, 32, GPIO_LOW_VIRT_BASE, 0,
|
||||||
IRQ_KIRKWOOD_GPIO_START, gpio0_irqs);
|
IRQ_KIRKWOOD_GPIO_START, gpio0_irqs);
|
||||||
orion_gpio_init(NULL, 32, 18, (void __iomem *)GPIO_HIGH_VIRT_BASE, 0,
|
orion_gpio_init(NULL, 32, 18, GPIO_HIGH_VIRT_BASE, 0,
|
||||||
IRQ_KIRKWOOD_GPIO_START + 32, gpio1_irqs);
|
IRQ_KIRKWOOD_GPIO_START + 32, gpio1_irqs);
|
||||||
}
|
}
|
||||||
|
@ -38,5 +38,6 @@ static unsigned int __init kirkwood_variant(void)
|
|||||||
void __init kirkwood_mpp_conf(unsigned int *mpp_list)
|
void __init kirkwood_mpp_conf(unsigned int *mpp_list)
|
||||||
{
|
{
|
||||||
orion_mpp_conf(mpp_list, kirkwood_variant(),
|
orion_mpp_conf(mpp_list, kirkwood_variant(),
|
||||||
MPP_MAX, DEV_BUS_VIRT_BASE);
|
MPP_MAX,
|
||||||
|
(unsigned long) DEV_BUS_VIRT_BASE);
|
||||||
}
|
}
|
||||||
|
@ -47,8 +47,8 @@ void kirkwood_enable_pcie(void)
|
|||||||
void kirkwood_pcie_id(u32 *dev, u32 *rev)
|
void kirkwood_pcie_id(u32 *dev, u32 *rev)
|
||||||
{
|
{
|
||||||
kirkwood_enable_pcie();
|
kirkwood_enable_pcie();
|
||||||
*dev = orion_pcie_dev_id((void __iomem *)PCIE_VIRT_BASE);
|
*dev = orion_pcie_dev_id(PCIE_VIRT_BASE);
|
||||||
*rev = orion_pcie_rev((void __iomem *)PCIE_VIRT_BASE);
|
*rev = orion_pcie_rev(PCIE_VIRT_BASE);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct pcie_port {
|
struct pcie_port {
|
||||||
@ -133,7 +133,7 @@ static struct pci_ops pcie_ops = {
|
|||||||
|
|
||||||
static void __init pcie0_ioresources_init(struct pcie_port *pp)
|
static void __init pcie0_ioresources_init(struct pcie_port *pp)
|
||||||
{
|
{
|
||||||
pp->base = (void __iomem *)PCIE_VIRT_BASE;
|
pp->base = PCIE_VIRT_BASE;
|
||||||
pp->irq = IRQ_KIRKWOOD_PCIE;
|
pp->irq = IRQ_KIRKWOOD_PCIE;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -155,7 +155,7 @@ static void __init pcie0_ioresources_init(struct pcie_port *pp)
|
|||||||
|
|
||||||
static void __init pcie1_ioresources_init(struct pcie_port *pp)
|
static void __init pcie1_ioresources_init(struct pcie_port *pp)
|
||||||
{
|
{
|
||||||
pp->base = (void __iomem *)PCIE1_VIRT_BASE;
|
pp->base = PCIE1_VIRT_BASE;
|
||||||
pp->irq = IRQ_KIRKWOOD_PCIE1;
|
pp->irq = IRQ_KIRKWOOD_PCIE1;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -273,11 +273,11 @@ static struct hw_pci kirkwood_pci __initdata = {
|
|||||||
.map_irq = kirkwood_pcie_map_irq,
|
.map_irq = kirkwood_pcie_map_irq,
|
||||||
};
|
};
|
||||||
|
|
||||||
static void __init add_pcie_port(int index, unsigned long base)
|
static void __init add_pcie_port(int index, void __iomem *base)
|
||||||
{
|
{
|
||||||
printk(KERN_INFO "Kirkwood PCIe port %d: ", index);
|
printk(KERN_INFO "Kirkwood PCIe port %d: ", index);
|
||||||
|
|
||||||
if (orion_pcie_link_up((void __iomem *)base)) {
|
if (orion_pcie_link_up(base)) {
|
||||||
printk(KERN_INFO "link up\n");
|
printk(KERN_INFO "link up\n");
|
||||||
pcie_port_map[num_pcie_ports++] = index;
|
pcie_port_map[num_pcie_ports++] = index;
|
||||||
} else
|
} else
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
#include <linux/gpio.h>
|
#include <linux/gpio.h>
|
||||||
#include <linux/gpio_keys.h>
|
#include <linux/gpio_keys.h>
|
||||||
#include <linux/input.h>
|
#include <linux/input.h>
|
||||||
|
#include <linux/io.h>
|
||||||
#include <asm/mach-types.h>
|
#include <asm/mach-types.h>
|
||||||
#include <asm/mach/arch.h>
|
#include <asm/mach/arch.h>
|
||||||
#include <mach/kirkwood.h>
|
#include <mach/kirkwood.h>
|
||||||
@ -161,7 +162,7 @@ static int __init ts41x_pci_init(void)
|
|||||||
* (Marvell 88sx7042/sata_mv) is known to stop working
|
* (Marvell 88sx7042/sata_mv) is known to stop working
|
||||||
* after a few minutes.
|
* after a few minutes.
|
||||||
*/
|
*/
|
||||||
orion_pcie_reset((void __iomem *)PCIE_VIRT_BASE);
|
orion_pcie_reset(PCIE_VIRT_BASE);
|
||||||
|
|
||||||
kirkwood_pcie_id(&dev, &rev);
|
kirkwood_pcie_id(&dev, &rev);
|
||||||
if (dev == MV88F6282_DEV_ID)
|
if (dev == MV88F6282_DEV_ID)
|
||||||
|
Loading…
Reference in New Issue
Block a user