From mboxrd@z Thu Jan 1 00:00:00 1970 From: Martin Guy Subject: Re: [PATCH v4 1/2] spi: implemented driver for Cirrus EP93xx SPI controller Date: Sat, 24 Apr 2010 19:14:43 +0100 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Cc: spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org, ryan-7Wk5F4Od5/oYd5yxfr4S2w@public.gmane.org, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org To: Mika Westerberg Return-path: In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: spi-devel-general-bounces-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org List-Id: linux-spi.vger.kernel.org Hi, another little fix: EP93xx User's Manual -> Synchronous Serial Port -> Registers SSPIIR description: "Read Only Note: A write to this register clears the receive overrun interrupt, regardless of the data value written." It doesn't affect the RIS/TIS ones, which are caused by the state of the device. so static irqreturn_t ep93xx_spi_interrupt(int irq, void *dev_id) { ... if (!(irq_status & (SSPIIR_RORIS | SSPIIR_TIS | SSPIIR_RIS))) return IRQ_NONE; /* not for us */ - /* clear the interrupt */ - ep93xx_spi_write_u8(espi, SSPICR, 0); /* * If we got ROR (receive overrun) interrupt we know that something is * wrong. Just abort the message. */ if (unlikely(irq_status & SSPIIR_RORIS)) { + /* clear the overrun interrupt */ + ep93xx_spi_write_u8(espi, SSPICR, 0); dev_warn(&espi->pdev->dev, "receive overrun, aborting the message\n"); espi->current_msg->status = -EIO; } else { ------------------------------------------------------------------------------