Re: [PATCH] ARM: Add spi controller driver support for NUC900

From: Russell King - ARM Linux
Date: Thu Nov 19 2009 - 04:02:57 EST


On Thu, Nov 19, 2009 at 04:40:50PM +0800, Wan ZongShun wrote:
> 2009/11/19 Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>:
> > I don't know, because I don't know what operation the hardware needs to
> > stop it from generating interrupts.  Perhaps that's clk_disable()?
>
> The interrupt will be not occur as long as I run clk_disable().
>
> > Once you've stopped the source of interrupts then the code should wait
> > for the IRQ handler to complete if it's running on another CPU.  Yes,
> > free_irq() does that.
>
> So, regarding my system of single CPU, maybe I need put this
> 'clk_disable()' in the front of function of w90p910_spi_remove().
>
> right?

Depending on the hardware, that's not the right answer. If turning off
the clock also causes register accesses to the device to abort, it is
a very dangerous thing to do.

It can also be dangerous if the clock is used to synchronise the interrupt
output - it can lead to the output being permanently asserted if the clock
is turned off with it asserted.

Normally devices have an "interrupt enable" register. You should disable
all interrupts from the device using this register after unregistering
the driver from the (SPI) subsystem.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/