[ARM] msm: clean up iomap and devices
- Add some more peripherals (sdcc, etc) to the iomap. - Remove virtual base addresses for devices that we should be passing physical addresses to drivers via resources and ioremap()ing. - don't try to use uarts for ll debug once the mmu is enabled due to problems with the peripheral window - make base addresses void __iomem * and fixup irq.c and timer.c - Remove common.c and bring in devices.c/devices.h similar to the PXA architecture. Signed-off-by: Brian Swetland <swetland@google.com>
This commit is contained in:
parent
b8a16e1fdf
commit
bcc0f6af07
@ -1,8 +1,6 @@
|
|||||||
obj-y += io.o idle.o irq.o timer.o dma.o
|
obj-y += io.o idle.o irq.o timer.o dma.o
|
||||||
|
obj-y += devices.o
|
||||||
obj-y += proc_comm.o
|
obj-y += proc_comm.o
|
||||||
|
|
||||||
# Common code for board init
|
|
||||||
obj-y += common.o
|
|
||||||
|
|
||||||
obj-$(CONFIG_MACH_HALIBUT) += board-halibut.o
|
obj-$(CONFIG_MACH_HALIBUT) += board-halibut.o
|
||||||
|
|
||||||
|
@ -33,6 +33,8 @@
|
|||||||
#include <linux/mtd/nand.h>
|
#include <linux/mtd/nand.h>
|
||||||
#include <linux/mtd/partitions.h>
|
#include <linux/mtd/partitions.h>
|
||||||
|
|
||||||
|
#include "devices.h"
|
||||||
|
|
||||||
static struct resource smc91x_resources[] = {
|
static struct resource smc91x_resources[] = {
|
||||||
[0] = {
|
[0] = {
|
||||||
.start = 0x9C004300,
|
.start = 0x9C004300,
|
||||||
@ -53,31 +55,12 @@ static struct platform_device smc91x_device = {
|
|||||||
.resource = smc91x_resources,
|
.resource = smc91x_resources,
|
||||||
};
|
};
|
||||||
|
|
||||||
static void mddi0_panel_power(int on)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
static struct msm_mddi_platform_data msm_mddi0_pdata = {
|
|
||||||
.panel_power = mddi0_panel_power,
|
|
||||||
.has_vsync_irq = 0,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct platform_device msm_mddi0_device = {
|
|
||||||
.name = "msm_mddi",
|
|
||||||
.id = 0,
|
|
||||||
.dev = {
|
|
||||||
.platform_data = &msm_mddi0_pdata
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct platform_device msm_serial0_device = {
|
|
||||||
.name = "msm_serial",
|
|
||||||
.id = 0,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct platform_device *devices[] __initdata = {
|
static struct platform_device *devices[] __initdata = {
|
||||||
&msm_serial0_device,
|
&msm_device_uart3,
|
||||||
&msm_mddi0_device,
|
&msm_device_smd,
|
||||||
|
&msm_device_nand,
|
||||||
|
&msm_device_hsusb,
|
||||||
|
&msm_device_i2c,
|
||||||
&smc91x_device,
|
&smc91x_device,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -91,7 +74,6 @@ static void __init halibut_init_irq(void)
|
|||||||
static void __init halibut_init(void)
|
static void __init halibut_init(void)
|
||||||
{
|
{
|
||||||
platform_add_devices(devices, ARRAY_SIZE(devices));
|
platform_add_devices(devices, ARRAY_SIZE(devices));
|
||||||
msm_add_devices();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __init halibut_map_io(void)
|
static void __init halibut_map_io(void)
|
||||||
@ -100,11 +82,6 @@ static void __init halibut_map_io(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
MACHINE_START(HALIBUT, "Halibut Board (QCT SURF7200A)")
|
MACHINE_START(HALIBUT, "Halibut Board (QCT SURF7200A)")
|
||||||
|
|
||||||
/* UART for LL DEBUG */
|
|
||||||
.phys_io = MSM_UART1_PHYS,
|
|
||||||
.io_pg_offst = ((MSM_UART1_BASE) >> 18) & 0xfffc,
|
|
||||||
|
|
||||||
.boot_params = 0x10000100,
|
.boot_params = 0x10000100,
|
||||||
.map_io = halibut_map_io,
|
.map_io = halibut_map_io,
|
||||||
.init_irq = halibut_init_irq,
|
.init_irq = halibut_init_irq,
|
||||||
|
@ -1,116 +0,0 @@
|
|||||||
/* linux/arch/arm/mach-msm/common.c
|
|
||||||
*
|
|
||||||
* Common setup code for MSM7K Boards
|
|
||||||
*
|
|
||||||
* Copyright (C) 2007 Google, Inc.
|
|
||||||
* Author: Brian Swetland <swetland@google.com>
|
|
||||||
*
|
|
||||||
* This software is licensed under the terms of the GNU General Public
|
|
||||||
* License version 2, as published by the Free Software Foundation, and
|
|
||||||
* may be copied, distributed, and modified under those terms.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <linux/kernel.h>
|
|
||||||
#include <linux/init.h>
|
|
||||||
#include <linux/platform_device.h>
|
|
||||||
#include <linux/io.h>
|
|
||||||
|
|
||||||
#include <asm/mach/flash.h>
|
|
||||||
|
|
||||||
#include <asm/setup.h>
|
|
||||||
|
|
||||||
#include <linux/mtd/nand.h>
|
|
||||||
#include <linux/mtd/partitions.h>
|
|
||||||
|
|
||||||
#include <mach/msm_iomap.h>
|
|
||||||
|
|
||||||
#include <mach/board.h>
|
|
||||||
|
|
||||||
struct flash_platform_data msm_nand_data = {
|
|
||||||
.parts = 0,
|
|
||||||
.nr_parts = 0,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct resource msm_nand_resources[] = {
|
|
||||||
[0] = {
|
|
||||||
.start = 7,
|
|
||||||
.end = 7,
|
|
||||||
.flags = IORESOURCE_DMA,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct platform_device msm_nand_device = {
|
|
||||||
.name = "msm_nand",
|
|
||||||
.id = -1,
|
|
||||||
.num_resources = ARRAY_SIZE(msm_nand_resources),
|
|
||||||
.resource = msm_nand_resources,
|
|
||||||
.dev = {
|
|
||||||
.platform_data = &msm_nand_data,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct platform_device msm_smd_device = {
|
|
||||||
.name = "msm_smd",
|
|
||||||
.id = -1,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct resource msm_i2c_resources[] = {
|
|
||||||
{
|
|
||||||
.start = MSM_I2C_BASE,
|
|
||||||
.end = MSM_I2C_BASE + MSM_I2C_SIZE - 1,
|
|
||||||
.flags = IORESOURCE_MEM,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
.start = INT_PWB_I2C,
|
|
||||||
.end = INT_PWB_I2C,
|
|
||||||
.flags = IORESOURCE_IRQ,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct platform_device msm_i2c_device = {
|
|
||||||
.name = "msm_i2c",
|
|
||||||
.id = 0,
|
|
||||||
.num_resources = ARRAY_SIZE(msm_i2c_resources),
|
|
||||||
.resource = msm_i2c_resources,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct resource usb_resources[] = {
|
|
||||||
{
|
|
||||||
.start = MSM_HSUSB_PHYS,
|
|
||||||
.end = MSM_HSUSB_PHYS + MSM_HSUSB_SIZE,
|
|
||||||
.flags = IORESOURCE_MEM,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
.start = INT_USB_HS,
|
|
||||||
.end = INT_USB_HS,
|
|
||||||
.flags = IORESOURCE_IRQ,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct platform_device msm_hsusb_device = {
|
|
||||||
.name = "msm_hsusb",
|
|
||||||
.id = -1,
|
|
||||||
.num_resources = ARRAY_SIZE(usb_resources),
|
|
||||||
.resource = usb_resources,
|
|
||||||
.dev = {
|
|
||||||
.coherent_dma_mask = 0xffffffff,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct platform_device *devices[] __initdata = {
|
|
||||||
&msm_nand_device,
|
|
||||||
&msm_smd_device,
|
|
||||||
&msm_i2c_device,
|
|
||||||
&msm_hsusb_device,
|
|
||||||
};
|
|
||||||
|
|
||||||
void __init msm_add_devices(void)
|
|
||||||
{
|
|
||||||
platform_add_devices(devices, ARRAY_SIZE(devices));
|
|
||||||
}
|
|
267
arch/arm/mach-msm/devices.c
Normal file
267
arch/arm/mach-msm/devices.c
Normal file
@ -0,0 +1,267 @@
|
|||||||
|
/* linux/arch/arm/mach-msm/devices.c
|
||||||
|
*
|
||||||
|
* Copyright (C) 2008 Google, Inc.
|
||||||
|
*
|
||||||
|
* This software is licensed under the terms of the GNU General Public
|
||||||
|
* License version 2, as published by the Free Software Foundation, and
|
||||||
|
* may be copied, distributed, and modified under those terms.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <linux/kernel.h>
|
||||||
|
#include <linux/platform_device.h>
|
||||||
|
|
||||||
|
#include <mach/msm_iomap.h>
|
||||||
|
#include "devices.h"
|
||||||
|
|
||||||
|
#include <asm/mach/flash.h>
|
||||||
|
#include <linux/mtd/nand.h>
|
||||||
|
#include <linux/mtd/partitions.h>
|
||||||
|
|
||||||
|
static struct resource resources_uart1[] = {
|
||||||
|
{
|
||||||
|
.start = INT_UART1,
|
||||||
|
.end = INT_UART1,
|
||||||
|
.flags = IORESOURCE_IRQ,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.start = MSM_UART1_PHYS,
|
||||||
|
.end = MSM_UART1_PHYS + MSM_UART1_SIZE - 1,
|
||||||
|
.flags = IORESOURCE_MEM,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct resource resources_uart2[] = {
|
||||||
|
{
|
||||||
|
.start = INT_UART2,
|
||||||
|
.end = INT_UART2,
|
||||||
|
.flags = IORESOURCE_IRQ,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.start = MSM_UART2_PHYS,
|
||||||
|
.end = MSM_UART2_PHYS + MSM_UART2_SIZE - 1,
|
||||||
|
.flags = IORESOURCE_MEM,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct resource resources_uart3[] = {
|
||||||
|
{
|
||||||
|
.start = INT_UART3,
|
||||||
|
.end = INT_UART3,
|
||||||
|
.flags = IORESOURCE_IRQ,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.start = MSM_UART3_PHYS,
|
||||||
|
.end = MSM_UART3_PHYS + MSM_UART3_SIZE - 1,
|
||||||
|
.flags = IORESOURCE_MEM,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
struct platform_device msm_device_uart1 = {
|
||||||
|
.name = "msm_serial",
|
||||||
|
.id = 0,
|
||||||
|
.num_resources = ARRAY_SIZE(resources_uart1),
|
||||||
|
.resource = resources_uart1,
|
||||||
|
};
|
||||||
|
|
||||||
|
struct platform_device msm_device_uart2 = {
|
||||||
|
.name = "msm_serial",
|
||||||
|
.id = 1,
|
||||||
|
.num_resources = ARRAY_SIZE(resources_uart2),
|
||||||
|
.resource = resources_uart2,
|
||||||
|
};
|
||||||
|
|
||||||
|
struct platform_device msm_device_uart3 = {
|
||||||
|
.name = "msm_serial",
|
||||||
|
.id = 2,
|
||||||
|
.num_resources = ARRAY_SIZE(resources_uart3),
|
||||||
|
.resource = resources_uart3,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct resource resources_i2c[] = {
|
||||||
|
{
|
||||||
|
.start = MSM_I2C_PHYS,
|
||||||
|
.end = MSM_I2C_PHYS + MSM_I2C_SIZE - 1,
|
||||||
|
.flags = IORESOURCE_MEM,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.start = INT_PWB_I2C,
|
||||||
|
.end = INT_PWB_I2C,
|
||||||
|
.flags = IORESOURCE_IRQ,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
struct platform_device msm_device_i2c = {
|
||||||
|
.name = "msm_i2c",
|
||||||
|
.id = 0,
|
||||||
|
.num_resources = ARRAY_SIZE(resources_i2c),
|
||||||
|
.resource = resources_i2c,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct resource resources_hsusb[] = {
|
||||||
|
{
|
||||||
|
.start = MSM_HSUSB_PHYS,
|
||||||
|
.end = MSM_HSUSB_PHYS + MSM_HSUSB_SIZE,
|
||||||
|
.flags = IORESOURCE_MEM,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.start = INT_USB_HS,
|
||||||
|
.end = INT_USB_HS,
|
||||||
|
.flags = IORESOURCE_IRQ,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
struct platform_device msm_device_hsusb = {
|
||||||
|
.name = "msm_hsusb",
|
||||||
|
.id = -1,
|
||||||
|
.num_resources = ARRAY_SIZE(resources_hsusb),
|
||||||
|
.resource = resources_hsusb,
|
||||||
|
.dev = {
|
||||||
|
.coherent_dma_mask = 0xffffffff,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
struct flash_platform_data msm_nand_data = {
|
||||||
|
.parts = NULL,
|
||||||
|
.nr_parts = 0,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct resource resources_nand[] = {
|
||||||
|
[0] = {
|
||||||
|
.start = 7,
|
||||||
|
.end = 7,
|
||||||
|
.flags = IORESOURCE_DMA,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
struct platform_device msm_device_nand = {
|
||||||
|
.name = "msm_nand",
|
||||||
|
.id = -1,
|
||||||
|
.num_resources = ARRAY_SIZE(resources_nand),
|
||||||
|
.resource = resources_nand,
|
||||||
|
.dev = {
|
||||||
|
.platform_data = &msm_nand_data,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
struct platform_device msm_device_smd = {
|
||||||
|
.name = "msm_smd",
|
||||||
|
.id = -1,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct resource resources_sdc1[] = {
|
||||||
|
{
|
||||||
|
.start = MSM_SDC1_PHYS,
|
||||||
|
.end = MSM_SDC1_PHYS + MSM_SDC1_SIZE - 1,
|
||||||
|
.flags = IORESOURCE_MEM,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.start = INT_SDC1_0,
|
||||||
|
.end = INT_SDC1_1,
|
||||||
|
.flags = IORESOURCE_IRQ,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.start = 8,
|
||||||
|
.end = 8,
|
||||||
|
.flags = IORESOURCE_DMA,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct resource resources_sdc2[] = {
|
||||||
|
{
|
||||||
|
.start = MSM_SDC2_PHYS,
|
||||||
|
.end = MSM_SDC2_PHYS + MSM_SDC2_SIZE - 1,
|
||||||
|
.flags = IORESOURCE_MEM,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.start = INT_SDC2_0,
|
||||||
|
.end = INT_SDC2_1,
|
||||||
|
.flags = IORESOURCE_IRQ,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.start = 8,
|
||||||
|
.end = 8,
|
||||||
|
.flags = IORESOURCE_DMA,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct resource resources_sdc3[] = {
|
||||||
|
{
|
||||||
|
.start = MSM_SDC3_PHYS,
|
||||||
|
.end = MSM_SDC3_PHYS + MSM_SDC3_SIZE - 1,
|
||||||
|
.flags = IORESOURCE_MEM,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.start = INT_SDC3_0,
|
||||||
|
.end = INT_SDC3_1,
|
||||||
|
.flags = IORESOURCE_IRQ,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.start = 8,
|
||||||
|
.end = 8,
|
||||||
|
.flags = IORESOURCE_DMA,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct resource resources_sdc4[] = {
|
||||||
|
{
|
||||||
|
.start = MSM_SDC4_PHYS,
|
||||||
|
.end = MSM_SDC4_PHYS + MSM_SDC4_SIZE - 1,
|
||||||
|
.flags = IORESOURCE_MEM,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.start = INT_SDC4_0,
|
||||||
|
.end = INT_SDC4_1,
|
||||||
|
.flags = IORESOURCE_IRQ,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.start = 8,
|
||||||
|
.end = 8,
|
||||||
|
.flags = IORESOURCE_DMA,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
struct platform_device msm_device_sdc1 = {
|
||||||
|
.name = "msm_sdcc",
|
||||||
|
.id = 1,
|
||||||
|
.num_resources = ARRAY_SIZE(resources_sdc1),
|
||||||
|
.resource = resources_sdc1,
|
||||||
|
.dev = {
|
||||||
|
.coherent_dma_mask = 0xffffffff,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
struct platform_device msm_device_sdc2 = {
|
||||||
|
.name = "msm_sdcc",
|
||||||
|
.id = 2,
|
||||||
|
.num_resources = ARRAY_SIZE(resources_sdc2),
|
||||||
|
.resource = resources_sdc2,
|
||||||
|
.dev = {
|
||||||
|
.coherent_dma_mask = 0xffffffff,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
struct platform_device msm_device_sdc3 = {
|
||||||
|
.name = "msm_sdcc",
|
||||||
|
.id = 3,
|
||||||
|
.num_resources = ARRAY_SIZE(resources_sdc3),
|
||||||
|
.resource = resources_sdc3,
|
||||||
|
.dev = {
|
||||||
|
.coherent_dma_mask = 0xffffffff,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
struct platform_device msm_device_sdc4 = {
|
||||||
|
.name = "msm_sdcc",
|
||||||
|
.id = 4,
|
||||||
|
.num_resources = ARRAY_SIZE(resources_sdc4),
|
||||||
|
.resource = resources_sdc4,
|
||||||
|
.dev = {
|
||||||
|
.coherent_dma_mask = 0xffffffff,
|
||||||
|
},
|
||||||
|
};
|
36
arch/arm/mach-msm/devices.h
Normal file
36
arch/arm/mach-msm/devices.h
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
/* linux/arch/arm/mach-msm/devices.h
|
||||||
|
*
|
||||||
|
* Copyright (C) 2008 Google, Inc.
|
||||||
|
*
|
||||||
|
* This software is licensed under the terms of the GNU General Public
|
||||||
|
* License version 2, as published by the Free Software Foundation, and
|
||||||
|
* may be copied, distributed, and modified under those terms.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __ARCH_ARM_MACH_MSM_DEVICES_H
|
||||||
|
#define __ARCH_ARM_MACH_MSM_DEVICES_H
|
||||||
|
|
||||||
|
extern struct platform_device msm_device_uart1;
|
||||||
|
extern struct platform_device msm_device_uart2;
|
||||||
|
extern struct platform_device msm_device_uart3;
|
||||||
|
|
||||||
|
extern struct platform_device msm_device_sdc1;
|
||||||
|
extern struct platform_device msm_device_sdc2;
|
||||||
|
extern struct platform_device msm_device_sdc3;
|
||||||
|
extern struct platform_device msm_device_sdc4;
|
||||||
|
|
||||||
|
extern struct platform_device msm_device_hsusb;
|
||||||
|
|
||||||
|
extern struct platform_device msm_device_i2c;
|
||||||
|
|
||||||
|
extern struct platform_device msm_device_smd;
|
||||||
|
|
||||||
|
extern struct platform_device msm_device_nand;
|
||||||
|
|
||||||
|
#endif
|
@ -22,18 +22,22 @@
|
|||||||
mrc p15, 0, \rx, c1, c0
|
mrc p15, 0, \rx, c1, c0
|
||||||
tst \rx, #1
|
tst \rx, #1
|
||||||
ldreq \rx, =MSM_UART1_PHYS
|
ldreq \rx, =MSM_UART1_PHYS
|
||||||
ldrne \rx, =MSM_UART1_BASE
|
movne \rx, #0
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro senduart,rd,rx
|
.macro senduart,rd,rx
|
||||||
str \rd, [\rx, #0x0C]
|
teq \rx, #0
|
||||||
|
strne \rd, [\rx, #0x0C]
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro waituart,rd,rx
|
.macro waituart,rd,rx
|
||||||
@ wait for TX_READY
|
@ wait for TX_READY
|
||||||
|
teq \rx, #0
|
||||||
|
bne 2f
|
||||||
1: ldr \rd, [\rx, #0x08]
|
1: ldr \rd, [\rx, #0x08]
|
||||||
tst \rd, #0x04
|
tst \rd, #0x04
|
||||||
beq 1b
|
beq 1b
|
||||||
|
2:
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro busyuart,rd,rx
|
.macro busyuart,rd,rx
|
||||||
|
@ -37,11 +37,17 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define MSM_VIC_BASE 0xE0000000
|
#ifdef __ASSEMBLY__
|
||||||
|
#define IOMEM(x) x
|
||||||
|
#else
|
||||||
|
#define IOMEM(x) ((void __force __iomem *)(x))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define MSM_VIC_BASE IOMEM(0xE0000000)
|
||||||
#define MSM_VIC_PHYS 0xC0000000
|
#define MSM_VIC_PHYS 0xC0000000
|
||||||
#define MSM_VIC_SIZE SZ_4K
|
#define MSM_VIC_SIZE SZ_4K
|
||||||
|
|
||||||
#define MSM_CSR_BASE 0xE0001000
|
#define MSM_CSR_BASE IOMEM(0xE0001000)
|
||||||
#define MSM_CSR_PHYS 0xC0100000
|
#define MSM_CSR_PHYS 0xC0100000
|
||||||
#define MSM_CSR_SIZE SZ_4K
|
#define MSM_CSR_SIZE SZ_4K
|
||||||
|
|
||||||
@ -49,56 +55,67 @@
|
|||||||
#define MSM_GPT_BASE MSM_CSR_BASE
|
#define MSM_GPT_BASE MSM_CSR_BASE
|
||||||
#define MSM_GPT_SIZE SZ_4K
|
#define MSM_GPT_SIZE SZ_4K
|
||||||
|
|
||||||
#define MSM_DMOV_BASE 0xE0002000
|
#define MSM_DMOV_BASE IOMEM(0xE0002000)
|
||||||
#define MSM_DMOV_PHYS 0xA9700000
|
#define MSM_DMOV_PHYS 0xA9700000
|
||||||
#define MSM_DMOV_SIZE SZ_4K
|
#define MSM_DMOV_SIZE SZ_4K
|
||||||
|
|
||||||
#define MSM_UART1_BASE 0xE0003000
|
#define MSM_GPIO1_BASE IOMEM(0xE0003000)
|
||||||
#define MSM_UART1_PHYS 0xA9A00000
|
|
||||||
#define MSM_UART1_SIZE SZ_4K
|
|
||||||
|
|
||||||
#define MSM_UART2_BASE 0xE0004000
|
|
||||||
#define MSM_UART2_PHYS 0xA9B00000
|
|
||||||
#define MSM_UART2_SIZE SZ_4K
|
|
||||||
|
|
||||||
#define MSM_UART3_BASE 0xE0005000
|
|
||||||
#define MSM_UART3_PHYS 0xA9C00000
|
|
||||||
#define MSM_UART3_SIZE SZ_4K
|
|
||||||
|
|
||||||
#define MSM_I2C_BASE 0xE0006000
|
|
||||||
#define MSM_I2C_PHYS 0xA9900000
|
|
||||||
#define MSM_I2C_SIZE SZ_4K
|
|
||||||
|
|
||||||
#define MSM_GPIO1_BASE 0xE0007000
|
|
||||||
#define MSM_GPIO1_PHYS 0xA9200000
|
#define MSM_GPIO1_PHYS 0xA9200000
|
||||||
#define MSM_GPIO1_SIZE SZ_4K
|
#define MSM_GPIO1_SIZE SZ_4K
|
||||||
|
|
||||||
#define MSM_GPIO2_BASE 0xE0008000
|
#define MSM_GPIO2_BASE IOMEM(0xE0004000)
|
||||||
#define MSM_GPIO2_PHYS 0xA9300000
|
#define MSM_GPIO2_PHYS 0xA9300000
|
||||||
#define MSM_GPIO2_SIZE SZ_4K
|
#define MSM_GPIO2_SIZE SZ_4K
|
||||||
|
|
||||||
#define MSM_HSUSB_BASE 0xE0009000
|
#define MSM_CLK_CTL_BASE IOMEM(0xE0005000)
|
||||||
#define MSM_HSUSB_PHYS 0xA0800000
|
|
||||||
#define MSM_HSUSB_SIZE SZ_4K
|
|
||||||
|
|
||||||
#define MSM_CLK_CTL_BASE 0xE000A000
|
|
||||||
#define MSM_CLK_CTL_PHYS 0xA8600000
|
#define MSM_CLK_CTL_PHYS 0xA8600000
|
||||||
#define MSM_CLK_CTL_SIZE SZ_4K
|
#define MSM_CLK_CTL_SIZE SZ_4K
|
||||||
|
|
||||||
#define MSM_PMDH_BASE 0xE000B000
|
#define MSM_SHARED_RAM_BASE IOMEM(0xE0100000)
|
||||||
#define MSM_PMDH_PHYS 0xAA600000
|
|
||||||
#define MSM_PMDH_SIZE SZ_4K
|
|
||||||
|
|
||||||
#define MSM_EMDH_BASE 0xE000C000
|
|
||||||
#define MSM_EMDH_PHYS 0xAA700000
|
|
||||||
#define MSM_EMDH_SIZE SZ_4K
|
|
||||||
|
|
||||||
#define MSM_MDP_BASE 0xE0010000
|
|
||||||
#define MSM_MDP_PHYS 0xAA200000
|
|
||||||
#define MSM_MDP_SIZE 0x000F0000
|
|
||||||
|
|
||||||
#define MSM_SHARED_RAM_BASE 0xE0100000
|
|
||||||
#define MSM_SHARED_RAM_PHYS 0x01F00000
|
#define MSM_SHARED_RAM_PHYS 0x01F00000
|
||||||
#define MSM_SHARED_RAM_SIZE SZ_1M
|
#define MSM_SHARED_RAM_SIZE SZ_1M
|
||||||
|
|
||||||
|
#define MSM_UART1_PHYS 0xA9A00000
|
||||||
|
#define MSM_UART1_SIZE SZ_4K
|
||||||
|
|
||||||
|
#define MSM_UART2_PHYS 0xA9B00000
|
||||||
|
#define MSM_UART2_SIZE SZ_4K
|
||||||
|
|
||||||
|
#define MSM_UART3_PHYS 0xA9C00000
|
||||||
|
#define MSM_UART3_SIZE SZ_4K
|
||||||
|
|
||||||
|
#define MSM_SDC1_PHYS 0xA0400000
|
||||||
|
#define MSM_SDC1_SIZE SZ_4K
|
||||||
|
|
||||||
|
#define MSM_SDC2_PHYS 0xA0500000
|
||||||
|
#define MSM_SDC2_SIZE SZ_4K
|
||||||
|
|
||||||
|
#define MSM_SDC3_PHYS 0xA0600000
|
||||||
|
#define MSM_SDC3_SIZE SZ_4K
|
||||||
|
|
||||||
|
#define MSM_SDC4_PHYS 0xA0700000
|
||||||
|
#define MSM_SDC4_SIZE SZ_4K
|
||||||
|
|
||||||
|
#define MSM_I2C_PHYS 0xA9900000
|
||||||
|
#define MSM_I2C_SIZE SZ_4K
|
||||||
|
|
||||||
|
#define MSM_HSUSB_PHYS 0xA0800000
|
||||||
|
#define MSM_HSUSB_SIZE SZ_4K
|
||||||
|
|
||||||
|
#define MSM_PMDH_PHYS 0xAA600000
|
||||||
|
#define MSM_PMDH_SIZE SZ_4K
|
||||||
|
|
||||||
|
#define MSM_EMDH_PHYS 0xAA700000
|
||||||
|
#define MSM_EMDH_SIZE SZ_4K
|
||||||
|
|
||||||
|
#define MSM_MDP_PHYS 0xAA200000
|
||||||
|
#define MSM_MDP_SIZE 0x000F0000
|
||||||
|
|
||||||
|
#define MSM_MDC_PHYS 0xAA500000
|
||||||
|
#define MSM_MDC_SIZE SZ_1M
|
||||||
|
|
||||||
|
#define MSM_AD5_PHYS 0xAC000000
|
||||||
|
#define MSM_AD5_SIZE (SZ_1M*13)
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -28,7 +28,7 @@
|
|||||||
#include <mach/board.h>
|
#include <mach/board.h>
|
||||||
|
|
||||||
#define MSM_DEVICE(name) { \
|
#define MSM_DEVICE(name) { \
|
||||||
.virtual = MSM_##name##_BASE, \
|
.virtual = (unsigned long) MSM_##name##_BASE, \
|
||||||
.pfn = __phys_to_pfn(MSM_##name##_PHYS), \
|
.pfn = __phys_to_pfn(MSM_##name##_PHYS), \
|
||||||
.length = MSM_##name##_SIZE, \
|
.length = MSM_##name##_SIZE, \
|
||||||
.type = MT_DEVICE_NONSHARED, \
|
.type = MT_DEVICE_NONSHARED, \
|
||||||
@ -39,19 +39,11 @@ static struct map_desc msm_io_desc[] __initdata = {
|
|||||||
MSM_DEVICE(CSR),
|
MSM_DEVICE(CSR),
|
||||||
MSM_DEVICE(GPT),
|
MSM_DEVICE(GPT),
|
||||||
MSM_DEVICE(DMOV),
|
MSM_DEVICE(DMOV),
|
||||||
MSM_DEVICE(UART1),
|
|
||||||
MSM_DEVICE(UART2),
|
|
||||||
MSM_DEVICE(UART3),
|
|
||||||
MSM_DEVICE(I2C),
|
|
||||||
MSM_DEVICE(GPIO1),
|
MSM_DEVICE(GPIO1),
|
||||||
MSM_DEVICE(GPIO2),
|
MSM_DEVICE(GPIO2),
|
||||||
MSM_DEVICE(HSUSB),
|
|
||||||
MSM_DEVICE(CLK_CTL),
|
MSM_DEVICE(CLK_CTL),
|
||||||
MSM_DEVICE(PMDH),
|
|
||||||
MSM_DEVICE(EMDH),
|
|
||||||
MSM_DEVICE(MDP),
|
|
||||||
{
|
{
|
||||||
.virtual = MSM_SHARED_RAM_BASE,
|
.virtual = (unsigned long) MSM_SHARED_RAM_BASE,
|
||||||
.pfn = __phys_to_pfn(MSM_SHARED_RAM_PHYS),
|
.pfn = __phys_to_pfn(MSM_SHARED_RAM_PHYS),
|
||||||
.length = MSM_SHARED_RAM_SIZE,
|
.length = MSM_SHARED_RAM_SIZE,
|
||||||
.type = MT_DEVICE,
|
.type = MT_DEVICE,
|
||||||
|
@ -66,20 +66,20 @@
|
|||||||
|
|
||||||
static void msm_irq_ack(unsigned int irq)
|
static void msm_irq_ack(unsigned int irq)
|
||||||
{
|
{
|
||||||
unsigned reg = VIC_INT_CLEAR0 + ((irq & 32) ? 4 : 0);
|
void __iomem *reg = VIC_INT_CLEAR0 + ((irq & 32) ? 4 : 0);
|
||||||
irq = 1 << (irq & 31);
|
irq = 1 << (irq & 31);
|
||||||
writel(irq, reg);
|
writel(irq, reg);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void msm_irq_mask(unsigned int irq)
|
static void msm_irq_mask(unsigned int irq)
|
||||||
{
|
{
|
||||||
unsigned reg = VIC_INT_ENCLEAR0 + ((irq & 32) ? 4 : 0);
|
void __iomem *reg = VIC_INT_ENCLEAR0 + ((irq & 32) ? 4 : 0);
|
||||||
writel(1 << (irq & 31), reg);
|
writel(1 << (irq & 31), reg);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void msm_irq_unmask(unsigned int irq)
|
static void msm_irq_unmask(unsigned int irq)
|
||||||
{
|
{
|
||||||
unsigned reg = VIC_INT_ENSET0 + ((irq & 32) ? 4 : 0);
|
void __iomem *reg = VIC_INT_ENSET0 + ((irq & 32) ? 4 : 0);
|
||||||
writel(1 << (irq & 31), reg);
|
writel(1 << (irq & 31), reg);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -90,8 +90,8 @@ static int msm_irq_set_wake(unsigned int irq, unsigned int on)
|
|||||||
|
|
||||||
static int msm_irq_set_type(unsigned int irq, unsigned int flow_type)
|
static int msm_irq_set_type(unsigned int irq, unsigned int flow_type)
|
||||||
{
|
{
|
||||||
unsigned treg = VIC_INT_TYPE0 + ((irq & 32) ? 4 : 0);
|
void __iomem *treg = VIC_INT_TYPE0 + ((irq & 32) ? 4 : 0);
|
||||||
unsigned preg = VIC_INT_POLARITY0 + ((irq & 32) ? 4 : 0);
|
void __iomem *preg = VIC_INT_POLARITY0 + ((irq & 32) ? 4 : 0);
|
||||||
int b = 1 << (irq & 31);
|
int b = 1 << (irq & 31);
|
||||||
|
|
||||||
if (flow_type & (IRQF_TRIGGER_FALLING | IRQF_TRIGGER_LOW))
|
if (flow_type & (IRQF_TRIGGER_FALLING | IRQF_TRIGGER_LOW))
|
||||||
|
@ -45,7 +45,7 @@ struct msm_clock {
|
|||||||
struct clock_event_device clockevent;
|
struct clock_event_device clockevent;
|
||||||
struct clocksource clocksource;
|
struct clocksource clocksource;
|
||||||
struct irqaction irq;
|
struct irqaction irq;
|
||||||
uint32_t regbase;
|
void __iomem *regbase;
|
||||||
uint32_t freq;
|
uint32_t freq;
|
||||||
uint32_t shift;
|
uint32_t shift;
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user