ARM: 6413/1: ux500: resources for DB5500 mbox driver and modem irq handler
Platform resources found in the DB5500 for mailboxes and the modem IRQ controller. Signed-off-by: Stefan Nilsson XK <stefan.xk.nilsson@stericsson.com> Signed-off-by: Linus Walleij <linus.walleij@stericsson.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
parent
4f724beace
commit
4d4a4b037c
@ -14,6 +14,7 @@
|
||||
#include <mach/hardware.h>
|
||||
#include <mach/devices.h>
|
||||
#include <mach/setup.h>
|
||||
#include <mach/irqs.h>
|
||||
|
||||
static struct map_desc u5500_io_desc[] __initdata = {
|
||||
__IO_DEV_DESC(U5500_GPIO0_BASE, SZ_4K),
|
||||
@ -24,6 +25,90 @@ static struct map_desc u5500_io_desc[] __initdata = {
|
||||
__IO_DEV_DESC(U5500_PRCMU_BASE, SZ_4K),
|
||||
};
|
||||
|
||||
static struct resource mbox0_resources[] = {
|
||||
{
|
||||
.name = "mbox_peer",
|
||||
.start = U5500_MBOX0_PEER_START,
|
||||
.end = U5500_MBOX0_PEER_END,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
{
|
||||
.name = "mbox_local",
|
||||
.start = U5500_MBOX0_LOCAL_START,
|
||||
.end = U5500_MBOX0_LOCAL_END,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
{
|
||||
.name = "mbox_irq",
|
||||
.start = MBOX_PAIR0_VIRT_IRQ,
|
||||
.end = MBOX_PAIR0_VIRT_IRQ,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
}
|
||||
};
|
||||
|
||||
static struct resource mbox1_resources[] = {
|
||||
{
|
||||
.name = "mbox_peer",
|
||||
.start = U5500_MBOX1_PEER_START,
|
||||
.end = U5500_MBOX1_PEER_END,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
{
|
||||
.name = "mbox_local",
|
||||
.start = U5500_MBOX1_LOCAL_START,
|
||||
.end = U5500_MBOX1_LOCAL_END,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
{
|
||||
.name = "mbox_irq",
|
||||
.start = MBOX_PAIR1_VIRT_IRQ,
|
||||
.end = MBOX_PAIR1_VIRT_IRQ,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
}
|
||||
};
|
||||
|
||||
static struct resource mbox2_resources[] = {
|
||||
{
|
||||
.name = "mbox_peer",
|
||||
.start = U5500_MBOX2_PEER_START,
|
||||
.end = U5500_MBOX2_PEER_END,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
{
|
||||
.name = "mbox_local",
|
||||
.start = U5500_MBOX2_LOCAL_START,
|
||||
.end = U5500_MBOX2_LOCAL_END,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
{
|
||||
.name = "mbox_irq",
|
||||
.start = MBOX_PAIR2_VIRT_IRQ,
|
||||
.end = MBOX_PAIR2_VIRT_IRQ,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
}
|
||||
};
|
||||
|
||||
static struct platform_device mbox0_device = {
|
||||
.id = 0,
|
||||
.name = "mbox",
|
||||
.resource = mbox0_resources,
|
||||
.num_resources = ARRAY_SIZE(mbox0_resources),
|
||||
};
|
||||
|
||||
static struct platform_device mbox1_device = {
|
||||
.id = 1,
|
||||
.name = "mbox",
|
||||
.resource = mbox1_resources,
|
||||
.num_resources = ARRAY_SIZE(mbox1_resources),
|
||||
};
|
||||
|
||||
static struct platform_device mbox2_device = {
|
||||
.id = 2,
|
||||
.name = "mbox",
|
||||
.resource = mbox2_resources,
|
||||
.num_resources = ARRAY_SIZE(mbox2_resources),
|
||||
};
|
||||
|
||||
static struct platform_device *u5500_platform_devs[] __initdata = {
|
||||
&u5500_gpio_devs[0],
|
||||
&u5500_gpio_devs[1],
|
||||
@ -33,6 +118,9 @@ static struct platform_device *u5500_platform_devs[] __initdata = {
|
||||
&u5500_gpio_devs[5],
|
||||
&u5500_gpio_devs[6],
|
||||
&u5500_gpio_devs[7],
|
||||
&mbox0_device,
|
||||
&mbox1_device,
|
||||
&mbox2_device,
|
||||
};
|
||||
|
||||
void __init u5500_map_io(void)
|
||||
|
@ -100,4 +100,18 @@
|
||||
#define U5500_GPIOBANK6_BASE (U5500_GPIO4_BASE + 0x80)
|
||||
#define U5500_GPIOBANK7_BASE (U5500_GPIO4_BASE + 0x100)
|
||||
|
||||
#define U5500_MBOX_BASE (U5500_MODEM_BASE + 0xFFD1000)
|
||||
#define U5500_MBOX0_PEER_START (U5500_MBOX_BASE + 0x40)
|
||||
#define U5500_MBOX0_PEER_END (U5500_MBOX_BASE + 0x5F)
|
||||
#define U5500_MBOX0_LOCAL_START (U5500_MBOX_BASE + 0x60)
|
||||
#define U5500_MBOX0_LOCAL_END (U5500_MBOX_BASE + 0x7F)
|
||||
#define U5500_MBOX1_PEER_START (U5500_MBOX_BASE + 0x80)
|
||||
#define U5500_MBOX1_PEER_END (U5500_MBOX_BASE + 0x9F)
|
||||
#define U5500_MBOX1_LOCAL_START (U5500_MBOX_BASE + 0xA0)
|
||||
#define U5500_MBOX1_LOCAL_END (U5500_MBOX_BASE + 0xBF)
|
||||
#define U5500_MBOX2_PEER_START (U5500_MBOX_BASE + 0x00)
|
||||
#define U5500_MBOX2_PEER_END (U5500_MBOX_BASE + 0x1F)
|
||||
#define U5500_MBOX2_LOCAL_START (U5500_MBOX_BASE + 0x20)
|
||||
#define U5500_MBOX2_LOCAL_END (U5500_MBOX_BASE + 0x3F)
|
||||
|
||||
#endif
|
||||
|
@ -61,6 +61,7 @@
|
||||
#define IRQ_DB5500_SDMMC0 (IRQ_SHPI_START + 60)
|
||||
#define IRQ_DB5500_HSEM (IRQ_SHPI_START + 61)
|
||||
#define IRQ_DB5500_SBAG (IRQ_SHPI_START + 63)
|
||||
#define IRQ_DB5500_MODEM (IRQ_SHPI_START + 65)
|
||||
#define IRQ_DB5500_SPI1 (IRQ_SHPI_START + 96)
|
||||
#define IRQ_DB5500_MSP2 (IRQ_SHPI_START + 98)
|
||||
#define IRQ_DB5500_SRPTIMER (IRQ_SHPI_START + 101)
|
||||
|
@ -84,6 +84,19 @@
|
||||
#include <mach/irqs-board-mop500.h>
|
||||
#endif
|
||||
|
||||
#define NR_IRQS IRQ_BOARD_END
|
||||
/*
|
||||
* After the board specific IRQ:s we reserve a range of IRQ:s in which virtual
|
||||
* IRQ:s representing modem IRQ:s can be allocated
|
||||
*/
|
||||
#define IRQ_MODEM_EVENTS_BASE (IRQ_BOARD_END + 1)
|
||||
#define IRQ_MODEM_EVENTS_NBR 72
|
||||
#define IRQ_MODEM_EVENTS_END (IRQ_MODEM_EVENTS_BASE + IRQ_MODEM_EVENTS_NBR)
|
||||
|
||||
/* List of virtual IRQ:s that are allocated from the range above */
|
||||
#define MBOX_PAIR0_VIRT_IRQ (IRQ_MODEM_EVENTS_BASE + 43)
|
||||
#define MBOX_PAIR1_VIRT_IRQ (IRQ_MODEM_EVENTS_BASE + 45)
|
||||
#define MBOX_PAIR2_VIRT_IRQ (IRQ_MODEM_EVENTS_BASE + 41)
|
||||
|
||||
#define NR_IRQS IRQ_MODEM_EVENTS_END
|
||||
|
||||
#endif /* ASM_ARCH_IRQS_H */
|
||||
|
Loading…
Reference in New Issue
Block a user