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

Commit 37b0d1de authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge master.kernel.org:/home/rmk/linux-2.6-arm

* master.kernel.org:/home/rmk/linux-2.6-arm:
  [ARM] Fix Integrator and Versatile interrupt initialisation
  [ARM] 3546/1: PATCH: subtle lost interrupts bug on i.MX
  [ARM] 3547/1: PXA-OHCI: Allow platforms to specify a power budget
  [ARM] Fix Neponset IRQ handling
parents d374c1c1 56f1319e
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -127,7 +127,7 @@ static void
imx_gpio_ack_irq(unsigned int irq)
imx_gpio_ack_irq(unsigned int irq)
{
{
	DEBUG_IRQ("%s: irq %d\n", __FUNCTION__, irq);
	DEBUG_IRQ("%s: irq %d\n", __FUNCTION__, irq);
	ISR(IRQ_TO_REG(irq)) |= 1 << ((irq - IRQ_GPIOA(0)) % 32);
	ISR(IRQ_TO_REG(irq)) = 1 << ((irq - IRQ_GPIOA(0)) % 32);
}
}


static void
static void
+1 −4
Original line number Original line Diff line number Diff line
@@ -232,8 +232,6 @@ static void __init intcp_init_irq(void)
	for (i = IRQ_PIC_START; i <= IRQ_PIC_END; i++) {
	for (i = IRQ_PIC_START; i <= IRQ_PIC_END; i++) {
		if (i == 11)
		if (i == 11)
			i = 22;
			i = 22;
		if (i == IRQ_CP_CPPLDINT)
			i++;
		if (i == 29)
		if (i == 29)
			break;
			break;
		set_irq_chip(i, &pic_chip);
		set_irq_chip(i, &pic_chip);
@@ -259,8 +257,7 @@ static void __init intcp_init_irq(void)
		set_irq_flags(i, IRQF_VALID | IRQF_PROBE);
		set_irq_flags(i, IRQF_VALID | IRQF_PROBE);
	}
	}


	set_irq_handler(IRQ_CP_CPPLDINT, sic_handle_irq);
	set_irq_chained_handler(IRQ_CP_CPPLDINT, sic_handle_irq);
	pic_unmask_irq(IRQ_CP_CPPLDINT);
}
}


/*
/*
+1 −0
Original line number Original line Diff line number Diff line
@@ -371,6 +371,7 @@ static int spitz_ohci_init(struct device *dev)
static struct pxaohci_platform_data spitz_ohci_platform_data = {
static struct pxaohci_platform_data spitz_ohci_platform_data = {
	.port_mode	= PMM_NPS_MODE,
	.port_mode	= PMM_NPS_MODE,
	.init		= spitz_ohci_init,
	.init		= spitz_ohci_init,
	.power_budget	= 150,
};
};




+8 −0
Original line number Original line Diff line number Diff line
@@ -59,6 +59,14 @@ neponset_irq_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *reg
		if (irr & (IRR_ETHERNET | IRR_USAR)) {
		if (irr & (IRR_ETHERNET | IRR_USAR)) {
			desc->chip->mask(irq);
			desc->chip->mask(irq);


			/*
			 * Ack the interrupt now to prevent re-entering
			 * this neponset handler.  Again, this is safe
			 * since we'll check the IRR register prior to
			 * leaving.
			 */
			desc->chip->ack(irq);

			if (irr & IRR_ETHERNET) {
			if (irr & IRR_ETHERNET) {
				d = irq_desc + IRQ_NEPONSET_SMC9196;
				d = irq_desc + IRQ_NEPONSET_SMC9196;
				desc_handle_irq(IRQ_NEPONSET_SMC9196, d, regs);
				desc_handle_irq(IRQ_NEPONSET_SMC9196, d, regs);
+2 −3
Original line number Original line Diff line number Diff line
@@ -112,10 +112,9 @@ void __init versatile_init_irq(void)
{
{
	unsigned int i;
	unsigned int i;


	vic_init(VA_VIC_BASE, IRQ_VIC_START, ~(1 << 31));
	vic_init(VA_VIC_BASE, IRQ_VIC_START, ~0);


	set_irq_handler(IRQ_VICSOURCE31, sic_handle_irq);
	set_irq_chained_handler(IRQ_VICSOURCE31, sic_handle_irq);
	enable_irq(IRQ_VICSOURCE31);


	/* Do second interrupt controller */
	/* Do second interrupt controller */
	writel(~0, VA_SIC_BASE + SIC_IRQ_ENABLE_CLEAR);
	writel(~0, VA_SIC_BASE + SIC_IRQ_ENABLE_CLEAR);
Loading