[PATCH] ARM: Add spi controller driver support for NUC900
Russell King - ARM Linux
linux at arm.linux.org.uk
Thu Nov 19 04:02:04 EST 2009
On Thu, Nov 19, 2009 at 04:40:50PM +0800, Wan ZongShun wrote:
> 2009/11/19 Andrew Morton <akpm at linux-foundation.org>:
> > 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.
More information about the linux-arm-kernel
mailing list