mirror of
https://github.com/Dasharo/linux.git
synced 2026-03-06 15:25:10 -08:00
Merge branch 'imx/sparse-irq' of git://git.linaro.org/people/shawnguo/linux-2.6 into next/irq
From Shawn Guo <shawn.guo@linaro.org>, this makes it possible to use sparse irqs with mach-imx. * 'imx/sparse-irq' of git://git.linaro.org/people/shawnguo/linux-2.6: ARM: imx: enable SPARSE_IRQ for imx platform ARM: fiq: change FIQ_START to a variable tty: serial: imx: remove the use of MXC_INTERNAL_IRQS ARM: imx: remove unneeded mach/irq.h inclusion i2c: imx: remove unneeded mach/irqs.h inclusion ARM: imx: add a legacy irqdomain for mx31ads ARM: imx: add a legacy irqdomain for 3ds_debugboard ARM: imx: pass gpio than irq number into mxc_expio_init ARM: imx: leave irq_base of wm8350_platform_data uninitialized dma: ipu: remove the use of ipu_platform_data ARM: imx: move irq_domain_add_legacy call into avic driver ARM: imx: move irq_domain_add_legacy call into tzic driver gpio/mxc: move irq_domain_add_legacy call into gpio driver ARM: imx: eliminate macro IRQ_GPIOx() ARM: imx: eliminate macro IOMUX_TO_IRQ() ARM: imx: eliminate macro IMX_GPIO_TO_IRQ() Signed-off-by: Arnd Bergmann <arnd@arndb.de>
This commit is contained in:
@@ -447,6 +447,7 @@ config ARCH_MXC
|
||||
select CLKSRC_MMIO
|
||||
select GENERIC_IRQ_CHIP
|
||||
select MULTI_IRQ_HANDLER
|
||||
select SPARSE_IRQ
|
||||
help
|
||||
Support for Freescale MXC/iMX-based family of processors
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ struct seq_file;
|
||||
/*
|
||||
* This is internal. Do not use it.
|
||||
*/
|
||||
extern void init_FIQ(void);
|
||||
extern void init_FIQ(int);
|
||||
extern int show_fiq_list(struct seq_file *, int);
|
||||
|
||||
#ifdef CONFIG_MULTI_IRQ_HANDLER
|
||||
|
||||
@@ -122,14 +122,16 @@ void release_fiq(struct fiq_handler *f)
|
||||
while (current_fiq->fiq_op(current_fiq->dev_id, 0));
|
||||
}
|
||||
|
||||
static int fiq_start;
|
||||
|
||||
void enable_fiq(int fiq)
|
||||
{
|
||||
enable_irq(fiq + FIQ_START);
|
||||
enable_irq(fiq + fiq_start);
|
||||
}
|
||||
|
||||
void disable_fiq(int fiq)
|
||||
{
|
||||
disable_irq(fiq + FIQ_START);
|
||||
disable_irq(fiq + fiq_start);
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(set_fiq_handler);
|
||||
@@ -140,7 +142,8 @@ EXPORT_SYMBOL(release_fiq);
|
||||
EXPORT_SYMBOL(enable_fiq);
|
||||
EXPORT_SYMBOL(disable_fiq);
|
||||
|
||||
void __init init_FIQ(void)
|
||||
void __init init_FIQ(int start)
|
||||
{
|
||||
no_fiq_insn = *(unsigned long *)0xffff001c;
|
||||
fiq_start = start;
|
||||
}
|
||||
|
||||
@@ -42,8 +42,8 @@ extern const struct imx_imx_uart_1irq_data imx31_imx_uart_data[];
|
||||
#define imx31_add_imx_uart4(pdata) imx31_add_imx_uart(4, pdata)
|
||||
|
||||
extern const struct imx_ipu_core_data imx31_ipu_core_data;
|
||||
#define imx31_add_ipu_core(pdata) \
|
||||
imx_add_ipu_core(&imx31_ipu_core_data, pdata)
|
||||
#define imx31_add_ipu_core() \
|
||||
imx_add_ipu_core(&imx31_ipu_core_data)
|
||||
#define imx31_alloc_mx3_camera(pdata) \
|
||||
imx_alloc_mx3_camera(&imx31_ipu_core_data, pdata)
|
||||
#define imx31_add_mx3_sdc_fb(pdata) \
|
||||
|
||||
@@ -50,8 +50,8 @@ extern const struct imx_imx_uart_1irq_data imx35_imx_uart_data[];
|
||||
#define imx35_add_imx_uart2(pdata) imx35_add_imx_uart(2, pdata)
|
||||
|
||||
extern const struct imx_ipu_core_data imx35_ipu_core_data;
|
||||
#define imx35_add_ipu_core(pdata) \
|
||||
imx_add_ipu_core(&imx35_ipu_core_data, pdata)
|
||||
#define imx35_add_ipu_core() \
|
||||
imx_add_ipu_core(&imx35_ipu_core_data)
|
||||
#define imx35_alloc_mx3_camera(pdata) \
|
||||
imx_alloc_mx3_camera(&imx35_ipu_core_data, pdata)
|
||||
#define imx35_add_mx3_sdc_fb(pdata) \
|
||||
|
||||
@@ -266,7 +266,7 @@ static struct spi_board_info __maybe_unused
|
||||
.bus_num = 0,
|
||||
.chip_select = 0,
|
||||
.max_speed_hz = 1500000,
|
||||
.irq = IRQ_GPIOD(25),
|
||||
/* irq number is run-time assigned */
|
||||
.platform_data = &ads7846_config,
|
||||
.mode = SPI_MODE_2,
|
||||
},
|
||||
@@ -329,6 +329,7 @@ void __init eukrea_mbimx27_baseboard_init(void)
|
||||
/* SPI_CS0 init */
|
||||
mxc_gpio_mode(GPIO_PORTD | 28 | GPIO_GPIO | GPIO_OUT);
|
||||
imx27_add_spi_imx0(&eukrea_mbimx27_spi0_data);
|
||||
eukrea_mbimx27_spi_board_info[0].irq = gpio_to_irq(IMX_GPIO_NR(4, 25));
|
||||
spi_register_board_info(eukrea_mbimx27_spi_board_info,
|
||||
ARRAY_SIZE(eukrea_mbimx27_spi_board_info));
|
||||
|
||||
|
||||
@@ -95,10 +95,6 @@ static const struct fb_videomode fb_modedb[] = {
|
||||
},
|
||||
};
|
||||
|
||||
static const struct ipu_platform_data mx3_ipu_data __initconst = {
|
||||
.irq_base = MXC_IPU_IRQ_START,
|
||||
};
|
||||
|
||||
static struct mx3fb_platform_data mx3fb_pdata __initdata = {
|
||||
.name = "CMO-QVGA",
|
||||
.mode = fb_modedb,
|
||||
@@ -287,7 +283,7 @@ void __init eukrea_mbimxsd35_baseboard_init(void)
|
||||
printk(KERN_ERR "error setting mbimxsd pads !\n");
|
||||
|
||||
imx35_add_imx_uart1(&uart_pdata);
|
||||
imx35_add_ipu_core(&mx3_ipu_data);
|
||||
imx35_add_ipu_core();
|
||||
imx35_add_mx3_sdc_fb(&mx3fb_pdata);
|
||||
|
||||
imx35_add_imx_ssi(0, &eukrea_mbimxsd_ssi_pdata);
|
||||
|
||||
@@ -10,7 +10,6 @@
|
||||
*/
|
||||
|
||||
#include <linux/irq.h>
|
||||
#include <linux/irqdomain.h>
|
||||
#include <linux/of_irq.h>
|
||||
#include <linux/of_platform.h>
|
||||
#include <asm/mach/arch.h>
|
||||
@@ -33,35 +32,8 @@ static const struct of_dev_auxdata imx27_auxdata_lookup[] __initconst = {
|
||||
{ /* sentinel */ }
|
||||
};
|
||||
|
||||
static int __init imx27_avic_add_irq_domain(struct device_node *np,
|
||||
struct device_node *interrupt_parent)
|
||||
{
|
||||
irq_domain_add_legacy(np, 64, 0, 0, &irq_domain_simple_ops, NULL);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int __init imx27_gpio_add_irq_domain(struct device_node *np,
|
||||
struct device_node *interrupt_parent)
|
||||
{
|
||||
static int gpio_irq_base = MXC_GPIO_IRQ_START + ARCH_NR_GPIOS;
|
||||
|
||||
gpio_irq_base -= 32;
|
||||
irq_domain_add_legacy(np, 32, gpio_irq_base, 0, &irq_domain_simple_ops,
|
||||
NULL);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct of_device_id imx27_irq_match[] __initconst = {
|
||||
{ .compatible = "fsl,imx27-avic", .data = imx27_avic_add_irq_domain, },
|
||||
{ .compatible = "fsl,imx27-gpio", .data = imx27_gpio_add_irq_domain, },
|
||||
{ /* sentinel */ }
|
||||
};
|
||||
|
||||
static void __init imx27_dt_init(void)
|
||||
{
|
||||
of_irq_init(imx27_irq_match);
|
||||
|
||||
of_platform_populate(NULL, of_default_bus_match_table,
|
||||
imx27_auxdata_lookup, NULL);
|
||||
}
|
||||
|
||||
@@ -11,7 +11,6 @@
|
||||
*/
|
||||
|
||||
#include <linux/irq.h>
|
||||
#include <linux/irqdomain.h>
|
||||
#include <linux/of_irq.h>
|
||||
#include <linux/of_platform.h>
|
||||
#include <linux/pinctrl/machine.h>
|
||||
@@ -45,30 +44,6 @@ static const struct of_dev_auxdata imx51_auxdata_lookup[] __initconst = {
|
||||
{ /* sentinel */ }
|
||||
};
|
||||
|
||||
static int __init imx51_tzic_add_irq_domain(struct device_node *np,
|
||||
struct device_node *interrupt_parent)
|
||||
{
|
||||
irq_domain_add_legacy(np, 128, 0, 0, &irq_domain_simple_ops, NULL);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int __init imx51_gpio_add_irq_domain(struct device_node *np,
|
||||
struct device_node *interrupt_parent)
|
||||
{
|
||||
static int gpio_irq_base = MXC_GPIO_IRQ_START + ARCH_NR_GPIOS;
|
||||
|
||||
gpio_irq_base -= 32;
|
||||
irq_domain_add_legacy(np, 32, gpio_irq_base, 0, &irq_domain_simple_ops, NULL);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct of_device_id imx51_irq_match[] __initconst = {
|
||||
{ .compatible = "fsl,imx51-tzic", .data = imx51_tzic_add_irq_domain, },
|
||||
{ .compatible = "fsl,imx51-gpio", .data = imx51_gpio_add_irq_domain, },
|
||||
{ /* sentinel */ }
|
||||
};
|
||||
|
||||
static const struct of_device_id imx51_iomuxc_of_match[] __initconst = {
|
||||
{ .compatible = "fsl,imx51-iomuxc-babbage", .data = imx51_babbage_common_init, },
|
||||
{ /* sentinel */ }
|
||||
@@ -80,8 +55,6 @@ static void __init imx51_dt_init(void)
|
||||
const struct of_device_id *of_id;
|
||||
void (*func)(void);
|
||||
|
||||
of_irq_init(imx51_irq_match);
|
||||
|
||||
pinctrl_provide_dummies();
|
||||
|
||||
node = of_find_matching_node(NULL, imx51_iomuxc_of_match);
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
#include <linux/err.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/irq.h>
|
||||
#include <linux/irqdomain.h>
|
||||
#include <linux/of_irq.h>
|
||||
#include <linux/of_platform.h>
|
||||
#include <linux/pinctrl/machine.h>
|
||||
@@ -52,30 +51,6 @@ static const struct of_dev_auxdata imx53_auxdata_lookup[] __initconst = {
|
||||
{ /* sentinel */ }
|
||||
};
|
||||
|
||||
static int __init imx53_tzic_add_irq_domain(struct device_node *np,
|
||||
struct device_node *interrupt_parent)
|
||||
{
|
||||
irq_domain_add_legacy(np, 128, 0, 0, &irq_domain_simple_ops, NULL);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int __init imx53_gpio_add_irq_domain(struct device_node *np,
|
||||
struct device_node *interrupt_parent)
|
||||
{
|
||||
static int gpio_irq_base = MXC_GPIO_IRQ_START + ARCH_NR_GPIOS;
|
||||
|
||||
gpio_irq_base -= 32;
|
||||
irq_domain_add_legacy(np, 32, gpio_irq_base, 0, &irq_domain_simple_ops, NULL);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct of_device_id imx53_irq_match[] __initconst = {
|
||||
{ .compatible = "fsl,imx53-tzic", .data = imx53_tzic_add_irq_domain, },
|
||||
{ .compatible = "fsl,imx53-gpio", .data = imx53_gpio_add_irq_domain, },
|
||||
{ /* sentinel */ }
|
||||
};
|
||||
|
||||
static const struct of_device_id imx53_iomuxc_of_match[] __initconst = {
|
||||
{ .compatible = "fsl,imx53-iomuxc-ard", .data = imx53_ard_common_init, },
|
||||
{ .compatible = "fsl,imx53-iomuxc-evk", .data = imx53_evk_common_init, },
|
||||
@@ -103,8 +78,6 @@ static void __init imx53_dt_init(void)
|
||||
const struct of_device_id *of_id;
|
||||
void (*func)(void);
|
||||
|
||||
of_irq_init(imx53_irq_match);
|
||||
|
||||
pinctrl_provide_dummies();
|
||||
|
||||
node = of_find_matching_node(NULL, imx53_iomuxc_of_match);
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/mtd/physmap.h>
|
||||
#include <linux/dm9000.h>
|
||||
#include <linux/gpio.h>
|
||||
#include <linux/i2c.h>
|
||||
|
||||
#include <asm/mach-types.h>
|
||||
@@ -26,7 +27,6 @@
|
||||
|
||||
#include <mach/common.h>
|
||||
#include <mach/hardware.h>
|
||||
#include <mach/irqs.h>
|
||||
#include <mach/iomux-mx1.h>
|
||||
|
||||
#include "devices-imx1.h"
|
||||
@@ -87,8 +87,7 @@ static struct resource dm9000_resources[] = {
|
||||
.end = MX1_CS4_PHYS + 0x00C00003,
|
||||
.flags = IORESOURCE_MEM,
|
||||
}, {
|
||||
.start = IRQ_GPIOB(14),
|
||||
.end = IRQ_GPIOB(14),
|
||||
/* irq number is run-time assigned */
|
||||
.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWLEVEL,
|
||||
},
|
||||
};
|
||||
@@ -129,6 +128,8 @@ static void __init apf9328_init(void)
|
||||
|
||||
imx1_add_imx_i2c(&apf9328_i2c_data);
|
||||
|
||||
dm9000_resources[2].start = gpio_to_irq(IMX_GPIO_NR(2, 14));
|
||||
dm9000_resources[2].end = gpio_to_irq(IMX_GPIO_NR(2, 14));
|
||||
platform_add_devices(devices, ARRAY_SIZE(devices));
|
||||
}
|
||||
|
||||
|
||||
@@ -367,10 +367,6 @@ static const struct fb_videomode fb_modedb[] = {
|
||||
},
|
||||
};
|
||||
|
||||
static const struct ipu_platform_data mx3_ipu_data __initconst = {
|
||||
.irq_base = MXC_IPU_IRQ_START,
|
||||
};
|
||||
|
||||
static struct mx3fb_platform_data mx3fb_pdata __initdata = {
|
||||
.name = "CRT-VGA",
|
||||
.mode = fb_modedb,
|
||||
@@ -408,7 +404,8 @@ static int armadillo5x0_sdhc1_init(struct device *dev,
|
||||
gpio_direction_input(gpio_wp);
|
||||
|
||||
/* When supported the trigger type have to be BOTH */
|
||||
ret = request_irq(IOMUX_TO_IRQ(MX31_PIN_ATA_DMACK), detect_irq,
|
||||
ret = request_irq(gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_ATA_DMACK)),
|
||||
detect_irq,
|
||||
IRQF_DISABLED | IRQF_TRIGGER_FALLING,
|
||||
"sdhc-detect", data);
|
||||
|
||||
@@ -429,7 +426,7 @@ err_gpio_free:
|
||||
|
||||
static void armadillo5x0_sdhc1_exit(struct device *dev, void *data)
|
||||
{
|
||||
free_irq(IOMUX_TO_IRQ(MX31_PIN_ATA_DMACK), data);
|
||||
free_irq(gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_ATA_DMACK)), data);
|
||||
gpio_free(IOMUX_TO_GPIO(MX31_PIN_ATA_DMACK));
|
||||
gpio_free(IOMUX_TO_GPIO(MX31_PIN_ATA_RESET_B));
|
||||
}
|
||||
@@ -450,8 +447,7 @@ static struct resource armadillo5x0_smc911x_resources[] = {
|
||||
.end = MX31_CS3_BASE_ADDR + SZ_32M - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
}, {
|
||||
.start = IOMUX_TO_IRQ(MX31_PIN_GPIO1_0),
|
||||
.end = IOMUX_TO_IRQ(MX31_PIN_GPIO1_0),
|
||||
/* irq number is run-time assigned */
|
||||
.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWLEVEL,
|
||||
},
|
||||
};
|
||||
@@ -498,6 +494,10 @@ static void __init armadillo5x0_init(void)
|
||||
|
||||
regulator_register_fixed(0, dummy_supplies, ARRAY_SIZE(dummy_supplies));
|
||||
|
||||
armadillo5x0_smc911x_resources[1].start =
|
||||
gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_GPIO1_0));
|
||||
armadillo5x0_smc911x_resources[1].end =
|
||||
gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_GPIO1_0));
|
||||
platform_add_devices(devices, ARRAY_SIZE(devices));
|
||||
imx_add_gpio_keys(&armadillo5x0_button_data);
|
||||
imx31_add_imx_i2c1(NULL);
|
||||
@@ -513,7 +513,7 @@ static void __init armadillo5x0_init(void)
|
||||
imx31_add_mxc_mmc(0, &sdhc_pdata);
|
||||
|
||||
/* Register FB */
|
||||
imx31_add_ipu_core(&mx3_ipu_data);
|
||||
imx31_add_ipu_core();
|
||||
imx31_add_mx3_sdc_fb(&mx3fb_pdata);
|
||||
|
||||
/* Register NOR Flash */
|
||||
|
||||
@@ -169,28 +169,28 @@ static struct i2c_board_info eukrea_cpuimx27_i2c_devices[] = {
|
||||
static struct plat_serial8250_port serial_platform_data[] = {
|
||||
{
|
||||
.mapbase = (unsigned long)(MX27_CS3_BASE_ADDR + 0x200000),
|
||||
.irq = IRQ_GPIOB(23),
|
||||
/* irq number is run-time assigned */
|
||||
.uartclk = 14745600,
|
||||
.regshift = 1,
|
||||
.iotype = UPIO_MEM,
|
||||
.flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST | UPF_IOREMAP,
|
||||
}, {
|
||||
.mapbase = (unsigned long)(MX27_CS3_BASE_ADDR + 0x400000),
|
||||
.irq = IRQ_GPIOB(22),
|
||||
/* irq number is run-time assigned */
|
||||
.uartclk = 14745600,
|
||||
.regshift = 1,
|
||||
.iotype = UPIO_MEM,
|
||||
.flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST | UPF_IOREMAP,
|
||||
}, {
|
||||
.mapbase = (unsigned long)(MX27_CS3_BASE_ADDR + 0x800000),
|
||||
.irq = IRQ_GPIOB(27),
|
||||
/* irq number is run-time assigned */
|
||||
.uartclk = 14745600,
|
||||
.regshift = 1,
|
||||
.iotype = UPIO_MEM,
|
||||
.flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST | UPF_IOREMAP,
|
||||
}, {
|
||||
.mapbase = (unsigned long)(MX27_CS3_BASE_ADDR + 0x1000000),
|
||||
.irq = IRQ_GPIOB(30),
|
||||
/* irq number is run-time assigned */
|
||||
.uartclk = 14745600,
|
||||
.regshift = 1,
|
||||
.iotype = UPIO_MEM,
|
||||
@@ -279,6 +279,10 @@ static void __init eukrea_cpuimx27_init(void)
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_SERIAL_8250) || defined(CONFIG_SERIAL_8250_MODULE)
|
||||
serial_platform_data[0].irq = IMX_GPIO_NR(2, 23);
|
||||
serial_platform_data[1].irq = IMX_GPIO_NR(2, 22);
|
||||
serial_platform_data[2].irq = IMX_GPIO_NR(2, 27);
|
||||
serial_platform_data[3].irq = IMX_GPIO_NR(2, 30);
|
||||
platform_device_register(&serial_device);
|
||||
#endif
|
||||
|
||||
|
||||
@@ -71,7 +71,7 @@ static struct i2c_board_info eukrea_cpuimx35_i2c_devices[] = {
|
||||
}, {
|
||||
I2C_BOARD_INFO("tsc2007", 0x48),
|
||||
.platform_data = &tsc2007_info,
|
||||
.irq = IMX_GPIO_TO_IRQ(TSC2007_IRQGPIO),
|
||||
/* irq number is run-time assigned */
|
||||
},
|
||||
};
|
||||
|
||||
@@ -172,6 +172,7 @@ static void __init eukrea_cpuimx35_init(void)
|
||||
imx35_add_imx_uart0(&uart_pdata);
|
||||
imx35_add_mxc_nand(&eukrea_cpuimx35_nand_board_info);
|
||||
|
||||
eukrea_cpuimx35_i2c_devices[1].irq = gpio_to_irq(TSC2007_IRQGPIO);
|
||||
i2c_register_board_info(0, eukrea_cpuimx35_i2c_devices,
|
||||
ARRAY_SIZE(eukrea_cpuimx35_i2c_devices));
|
||||
imx35_add_imx_i2c0(&eukrea_cpuimx35_i2c0_data);
|
||||
|
||||
@@ -258,7 +258,7 @@ static struct spi_board_info cpuimx51sd_spi_device[] = {
|
||||
.mode = SPI_MODE_0,
|
||||
.chip_select = 0,
|
||||
.platform_data = &mcp251x_info,
|
||||
.irq = IMX_GPIO_TO_IRQ(CAN_IRQGPIO)
|
||||
/* irq number is run-time assigned */
|
||||
},
|
||||
};
|
||||
|
||||
@@ -309,6 +309,7 @@ static void __init eukrea_cpuimx51sd_init(void)
|
||||
msleep(20);
|
||||
gpio_set_value(CAN_RST, 1);
|
||||
imx51_add_ecspi(0, &cpuimx51sd_ecspi1_pdata);
|
||||
cpuimx51sd_spi_device[0].irq = gpio_to_irq(CAN_IRQGPIO);
|
||||
spi_register_board_info(cpuimx51sd_spi_device,
|
||||
ARRAY_SIZE(cpuimx51sd_spi_device));
|
||||
|
||||
|
||||
@@ -40,6 +40,7 @@
|
||||
#include <asm/mach/time.h>
|
||||
#include <asm/system.h>
|
||||
#include <mach/common.h>
|
||||
#include <mach/hardware.h>
|
||||
#include <mach/iomux-mx27.h>
|
||||
|
||||
#include "devices-imx27.h"
|
||||
@@ -47,7 +48,7 @@
|
||||
#define TVP5150_RSTN (GPIO_PORTC + 18)
|
||||
#define TVP5150_PWDN (GPIO_PORTC + 19)
|
||||
#define OTG_PHY_CS_GPIO (GPIO_PORTF + 17)
|
||||
#define SDHC1_IRQ IRQ_GPIOB(25)
|
||||
#define SDHC1_IRQ_GPIO IMX_GPIO_NR(2, 25)
|
||||
|
||||
#define MOTHERBOARD_BIT2 (GPIO_PORTD + 31)
|
||||
#define MOTHERBOARD_BIT1 (GPIO_PORTD + 30)
|
||||
@@ -307,14 +308,14 @@ static int visstrim_m10_sdhc1_init(struct device *dev,
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = request_irq(SDHC1_IRQ, detect_irq, IRQF_TRIGGER_FALLING,
|
||||
"mmc-detect", data);
|
||||
ret = request_irq(gpio_to_irq(SDHC1_IRQ_GPIO), detect_irq,
|
||||
IRQF_TRIGGER_FALLING, "mmc-detect", data);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void visstrim_m10_sdhc1_exit(struct device *dev, void *data)
|
||||
{
|
||||
free_irq(SDHC1_IRQ, data);
|
||||
free_irq(gpio_to_irq(SDHC1_IRQ_GPIO), data);
|
||||
}
|
||||
|
||||
static const struct imxmmc_platform_data visstrim_m10_sdhc_pdata __initconst = {
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
#include <linux/init.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/irq.h>
|
||||
#include <linux/irqdomain.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/of_address.h>
|
||||
#include <linux/of_irq.h>
|
||||
@@ -136,21 +135,8 @@ static void __init imx6q_map_io(void)
|
||||
imx6q_clock_map_io();
|
||||
}
|
||||
|
||||
static int __init imx6q_gpio_add_irq_domain(struct device_node *np,
|
||||
struct device_node *interrupt_parent)
|
||||
{
|
||||
static int gpio_irq_base = MXC_GPIO_IRQ_START + ARCH_NR_GPIOS;
|
||||
|
||||
gpio_irq_base -= 32;
|
||||
irq_domain_add_legacy(np, 32, gpio_irq_base, 0, &irq_domain_simple_ops,
|
||||
NULL);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct of_device_id imx6q_irq_match[] __initconst = {
|
||||
{ .compatible = "arm,cortex-a9-gic", .data = gic_of_init, },
|
||||
{ .compatible = "fsl,imx6q-gpio", .data = imx6q_gpio_add_irq_domain, },
|
||||
{ /* sentinel */ }
|
||||
};
|
||||
|
||||
|
||||
@@ -73,7 +73,7 @@ static struct plat_serial8250_port serial_platform_data[] = {
|
||||
{
|
||||
.membase = KZM_ARM11_IO_ADDRESS(KZM_ARM11_16550),
|
||||
.mapbase = KZM_ARM11_16550,
|
||||
.irq = IOMUX_TO_IRQ(MX31_PIN_GPIO1_1),
|
||||
/* irq number is run-time assigned */
|
||||
.irqflags = IRQ_TYPE_EDGE_RISING,
|
||||
.uartclk = 14745600,
|
||||
.regshift = 0,
|
||||
@@ -91,8 +91,7 @@ static struct resource serial8250_resources[] = {
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
{
|
||||
.start = IOMUX_TO_IRQ(MX31_PIN_GPIO1_1),
|
||||
.end = IOMUX_TO_IRQ(MX31_PIN_GPIO1_1),
|
||||
/* irq number is run-time assigned */
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
@@ -125,6 +124,13 @@ static int __init kzm_init_ext_uart(void)
|
||||
tmp |= 0x2;
|
||||
__raw_writeb(tmp, KZM_ARM11_IO_ADDRESS(KZM_ARM11_CTL1));
|
||||
|
||||
serial_platform_data[0].irq =
|
||||
gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_GPIO1_1));
|
||||
serial8250_resources[1].start =
|
||||
gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_GPIO1_1));
|
||||
serial8250_resources[1].end =
|
||||
gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_GPIO1_1));
|
||||
|
||||
return platform_device_register(&serial_device);
|
||||
}
|
||||
#else
|
||||
@@ -152,8 +158,7 @@ static struct resource kzm_smsc9118_resources[] = {
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
{
|
||||
.start = IOMUX_TO_IRQ(MX31_PIN_GPIO1_2),
|
||||
.end = IOMUX_TO_IRQ(MX31_PIN_GPIO1_2),
|
||||
/* irq number is run-time assigned */
|
||||
.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE,
|
||||
},
|
||||
};
|
||||
@@ -184,6 +189,11 @@ static int __init kzm_init_smsc9118(void)
|
||||
|
||||
regulator_register_fixed(0, dummy_supplies, ARRAY_SIZE(dummy_supplies));
|
||||
|
||||
kzm_smsc9118_resources[1].start =
|
||||
gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_GPIO1_2));
|
||||
kzm_smsc9118_resources[1].end =
|
||||
gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_GPIO1_2));
|
||||
|
||||
return platform_device_register(&kzm_smsc9118_device);
|
||||
}
|
||||
#else
|
||||
|
||||
@@ -26,7 +26,6 @@
|
||||
#include <mach/common.h>
|
||||
#include <mach/hardware.h>
|
||||
#include <mach/iomux-mx1.h>
|
||||
#include <mach/irqs.h>
|
||||
|
||||
#include "devices-imx1.h"
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
(MX21ADS_MMIO_BASE_ADDR + (offset))
|
||||
|
||||
#define MX21ADS_CS8900A_MMIO_SIZE 0x200000
|
||||
#define MX21ADS_CS8900A_IRQ IRQ_GPIOE(11)
|
||||
#define MX21ADS_CS8900A_IRQ_GPIO IMX_GPIO_NR(5, 11)
|
||||
#define MX21ADS_ST16C255_IOBASE_REG MX21ADS_REG_ADDR(0x200000)
|
||||
#define MX21ADS_VERSION_REG MX21ADS_REG_ADDR(0x400000)
|
||||
#define MX21ADS_IO_REG MX21ADS_REG_ADDR(0x800000)
|
||||
@@ -159,9 +159,10 @@ static struct platform_device mx21ads_nor_mtd_device = {
|
||||
.resource = &mx21ads_flash_resource,
|
||||
};
|
||||
|
||||
static const struct resource mx21ads_cs8900_resources[] __initconst = {
|
||||
static struct resource mx21ads_cs8900_resources[] __initdata = {
|
||||
DEFINE_RES_MEM(MX21_CS1_BASE_ADDR, MX21ADS_CS8900A_MMIO_SIZE),
|
||||
DEFINE_RES_IRQ(MX21ADS_CS8900A_IRQ),
|
||||
/* irq number is run-time assigned */
|
||||
DEFINE_RES_IRQ(-1),
|
||||
};
|
||||
|
||||
static const struct platform_device_info mx21ads_cs8900_devinfo __initconst = {
|
||||
@@ -241,13 +242,13 @@ static int mx21ads_sdhc_get_ro(struct device *dev)
|
||||
static int mx21ads_sdhc_init(struct device *dev, irq_handler_t detect_irq,
|
||||
void *data)
|
||||
{
|
||||
return request_irq(IRQ_GPIOD(25), detect_irq,
|
||||
return request_irq(gpio_to_irq(IMX_GPIO_NR(4, 25)), detect_irq,
|
||||
IRQF_TRIGGER_FALLING, "mmc-detect", data);
|
||||
}
|
||||
|
||||
static void mx21ads_sdhc_exit(struct device *dev, void *data)
|
||||
{
|
||||
free_irq(IRQ_GPIOD(25), data);
|
||||
free_irq(gpio_to_irq(IMX_GPIO_NR(4, 25)), data);
|
||||
}
|
||||
|
||||
static const struct imxmmc_platform_data mx21ads_sdhc_pdata __initconst = {
|
||||
@@ -304,6 +305,11 @@ static void __init mx21ads_board_init(void)
|
||||
imx21_add_mxc_nand(&mx21ads_nand_board_info);
|
||||
|
||||
platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices));
|
||||
|
||||
mx21ads_cs8900_resources[1].start =
|
||||
gpio_to_irq(MX21ADS_CS8900A_IRQ_GPIO);
|
||||
mx21ads_cs8900_resources[1].end =
|
||||
gpio_to_irq(MX21ADS_CS8900A_IRQ_GPIO);
|
||||
platform_device_register_full(&mx21ads_cs8900_devinfo);
|
||||
}
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user