mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Luis Henriques <luis.henriques@canonical.com>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org,
	kernel-team@lists.ubuntu.com
Cc: Girish K S <ks.giri@samsung.com>,
	Mark Brown <broonie@opensource.wolfsonmicro.com>,
	Luis Henriques <luis.henriques@canonical.com>
Subject: [PATCH 03/72] spi/s3c64xx: modified error interrupt handling and init
Date: Thu, 18 Apr 2013 10:15:48 +0100	[thread overview]
Message-ID: <1366276617-3553-4-git-send-email-luis.henriques@canonical.com> (raw)
In-Reply-To: <1366276617-3553-1-git-send-email-luis.henriques@canonical.com>

3.5.7.11 -stable review patch.  If anyone has any objections, please let me know.

------------------

From: Girish K S <girishks2000@gmail.com>

commit 375981f2e14868be16cafbffd34a4f16a6ee01c6 upstream.

The status of the interrupt is available in the status register,
so reading the clear pending register and writing back the same
value will not actually clear the pending interrupts. This patch
modifies the interrupt handler to read the status register and
clear the corresponding pending bit in the clear pending register.

Modified the hwInit function to clear all the pending interrupts.

Signed-off-by: Girish K S <ks.giri@samsung.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
 drivers/spi/spi-s3c64xx.c | 41 +++++++++++++++++++++++++----------------
 1 file changed, 25 insertions(+), 16 deletions(-)

diff --git a/drivers/spi/spi-s3c64xx.c b/drivers/spi/spi-s3c64xx.c
index 972a94c..486e864 100644
--- a/drivers/spi/spi-s3c64xx.c
+++ b/drivers/spi/spi-s3c64xx.c
@@ -889,25 +889,30 @@ static irqreturn_t s3c64xx_spi_irq(int irq, void *data)
 {
 	struct s3c64xx_spi_driver_data *sdd = data;
 	struct spi_master *spi = sdd->master;
-	unsigned int val;
+	unsigned int val, clr = 0;
 
-	val = readl(sdd->regs + S3C64XX_SPI_PENDING_CLR);
+	val = readl(sdd->regs + S3C64XX_SPI_STATUS);
 
-	val &= S3C64XX_SPI_PND_RX_OVERRUN_CLR |
-		S3C64XX_SPI_PND_RX_UNDERRUN_CLR |
-		S3C64XX_SPI_PND_TX_OVERRUN_CLR |
-		S3C64XX_SPI_PND_TX_UNDERRUN_CLR;
-
-	writel(val, sdd->regs + S3C64XX_SPI_PENDING_CLR);
-
-	if (val & S3C64XX_SPI_PND_RX_OVERRUN_CLR)
+	if (val & S3C64XX_SPI_ST_RX_OVERRUN_ERR) {
+		clr = S3C64XX_SPI_PND_RX_OVERRUN_CLR;
 		dev_err(&spi->dev, "RX overrun\n");
-	if (val & S3C64XX_SPI_PND_RX_UNDERRUN_CLR)
+	}
+	if (val & S3C64XX_SPI_ST_RX_UNDERRUN_ERR) {
+		clr |= S3C64XX_SPI_PND_RX_UNDERRUN_CLR;
 		dev_err(&spi->dev, "RX underrun\n");
-	if (val & S3C64XX_SPI_PND_TX_OVERRUN_CLR)
+	}
+	if (val & S3C64XX_SPI_ST_TX_OVERRUN_ERR) {
+		clr |= S3C64XX_SPI_PND_TX_OVERRUN_CLR;
 		dev_err(&spi->dev, "TX overrun\n");
-	if (val & S3C64XX_SPI_PND_TX_UNDERRUN_CLR)
+	}
+	if (val & S3C64XX_SPI_ST_TX_UNDERRUN_ERR) {
+		clr |= S3C64XX_SPI_PND_TX_UNDERRUN_CLR;
 		dev_err(&spi->dev, "TX underrun\n");
+	}
+
+	/* Clear the pending irq by setting and then clearing it */
+	writel(clr, sdd->regs + S3C64XX_SPI_PENDING_CLR);
+	writel(0, sdd->regs + S3C64XX_SPI_PENDING_CLR);
 
 	return IRQ_HANDLED;
 }
@@ -931,9 +936,13 @@ static void s3c64xx_spi_hwinit(struct s3c64xx_spi_driver_data *sdd, int channel)
 	writel(0, regs + S3C64XX_SPI_MODE_CFG);
 	writel(0, regs + S3C64XX_SPI_PACKET_CNT);
 
-	/* Clear any irq pending bits */
-	writel(readl(regs + S3C64XX_SPI_PENDING_CLR),
-				regs + S3C64XX_SPI_PENDING_CLR);
+	/* Clear any irq pending bits, should set and clear the bits */
+	val = S3C64XX_SPI_PND_RX_OVERRUN_CLR |
+		S3C64XX_SPI_PND_RX_UNDERRUN_CLR |
+		S3C64XX_SPI_PND_TX_OVERRUN_CLR |
+		S3C64XX_SPI_PND_TX_UNDERRUN_CLR;
+	writel(val, regs + S3C64XX_SPI_PENDING_CLR);
+	writel(0, regs + S3C64XX_SPI_PENDING_CLR);
 
 	writel(0, regs + S3C64XX_SPI_SWAP_CFG);
 
-- 
1.8.1.2


  parent reply	other threads:[~2013-04-18  9:17 UTC|newest]

Thread overview: 77+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-04-18  9:15 [ 3.5.y.z extended stable ] Linux 3.5.7.11 stable review Luis Henriques
2013-04-18  9:15 ` [PATCH 01/72] ASoC: imx-ssi: Fix occasional AC97 reset failure Luis Henriques
2013-04-18  9:15 ` [PATCH 02/72] ASoC: dma-sh7760: Fix compile error Luis Henriques
2013-04-18  9:15 ` Luis Henriques [this message]
2013-04-18  9:15 ` [PATCH 04/72] spi/mpc512x-psc: optionally keep PSC SS asserted across xfer segmensts Luis Henriques
2013-04-18  9:15 ` [PATCH 05/72] EISA/PCI: Fix bus res reference Luis Henriques
2013-04-18  9:15 ` [PATCH 06/72] EISA/PCI: Init EISA early, before PNP Luis Henriques
2013-04-18  9:15 ` [PATCH 07/72] mwifiex: limit channel number not to overflow memory Luis Henriques
2013-04-18  9:15 ` [PATCH 08/72] ALSA: hda - bug fix on return value when getting HDMI ELD info Luis Henriques
2013-04-18  9:15 ` [PATCH 09/72] x86: remove the x32 syscall bitmask from syscall_get_nr() Luis Henriques
2013-04-18  9:15 ` [PATCH 10/72] ixgbe: fix registration order of driver and DCA nofitication Luis Henriques
2013-04-18  9:15 ` [PATCH 11/72] Revert "drivers/rtc/rtc-at91rm9200.c: use a variable for storing IMR" Luis Henriques
2013-04-18  9:15 ` [PATCH 12/72] alpha: Add irongate_io to PCI bus resources Luis Henriques
2013-04-18  9:15 ` [PATCH 13/72] crypto: gcm - fix assumption that assoc has one segment Luis Henriques
2013-04-18  9:15 ` [PATCH 14/72] libata: Use integer return value for atapi_command_packet_set Luis Henriques
2013-04-18  9:16 ` [PATCH 15/72] libata: Set max sector to 65535 for Slimtype DVD A DS8A8SH drive Luis Henriques
2013-04-18  9:16 ` [PATCH 16/72] ata_piix: Fix DVD not dectected at some Haswell platforms Luis Henriques
2013-04-18  9:16 ` [PATCH 17/72] remoteproc: fix error path of handle_vdev Luis Henriques
2013-04-18  9:16 ` [PATCH 18/72] hwspinlock: fix __hwspin_lock_request error path Luis Henriques
2013-04-18  9:16 ` [PATCH 19/72] remoteproc: fix FW_CONFIG typo Luis Henriques
2013-04-18  9:16 ` [PATCH 20/72] powerpc: pSeries_lpar_hpte_remove fails from Adjunct partition being performed before the ANDCOND test Luis Henriques
2013-04-18  9:16 ` [PATCH 21/72] ftrace: Consistently restore trace function on sysctl enabling Luis Henriques
2013-04-18  9:16 ` [PATCH 22/72] spinlocks and preemption points need to be at least compiler barriers Luis Henriques
2013-04-18  9:16 ` [PATCH 23/72] drm/mgag200: Index 24 in extended CRTC registers is 24 in hex, not decimal Luis Henriques
2013-04-18  9:16 ` [PATCH 24/72] panic: fix a possible deadlock in panic() Luis Henriques
2013-04-18  9:16 ` [PATCH 25/72] Bluetooth: Add support for IMC Networks [13d3:3393] Luis Henriques
2013-04-18  9:16 ` [PATCH 26/72] Bluetooth: Add support for GC-WB300D PCIe [04ca:3006] to ath3k Luis Henriques
2013-04-18  9:16 ` [PATCH 27/72] Bluetooth: Add support for Foxconn / Hon Hai [0489:e04e] Luis Henriques
2013-04-18  9:16 ` [PATCH 28/72] Bluetooth: Add support for Foxconn / Hon Hai [0489:e056] Luis Henriques
2013-04-18  9:16 ` [PATCH 29/72] Bluetooth device 04ca:3008 should use ath3k Luis Henriques
2013-04-18  9:16 ` [PATCH 30/72] Bluetooth: Add support for atheros 04ca:3004 device to ath3k Luis Henriques
2013-04-18  9:16 ` [PATCH 31/72] Bluetooth: Device 0cf3:3008 should map AR 3012 Luis Henriques
2013-04-18  9:16 ` [PATCH 32/72] ALSA: hda - Enabling Realtek ALC 671 codec Luis Henriques
2013-04-18  9:16 ` [PATCH 33/72] ALSA: hda - fix typo in proc output Luis Henriques
2013-04-18  9:16 ` [PATCH 34/72] KVM: x86: fix for buffer overflow in handling of MSR_KVM_SYSTEM_TIME (CVE-2013-1796) Luis Henriques
2013-04-18  9:16 ` [PATCH 35/72] KVM: x86: Convert MSR_KVM_SYSTEM_TIME to use gfn_to_hva_cache functions (CVE-2013-1797) Luis Henriques
2013-04-22  3:54   ` Ben Hutchings
2013-04-22  8:55     ` Luis Henriques
2013-04-18  9:16 ` [PATCH 36/72] KVM: Fix bounds checking in ioapic indirect register reads (CVE-2013-1798) Luis Henriques
2013-04-18  9:16 ` [PATCH 37/72] rt2x00: rt2x00pci_regbusy_read() - only print register access failure once Luis Henriques
2013-04-18  9:16 ` [PATCH 38/72] can: gw: use kmem_cache_free() instead of kfree() Luis Henriques
2013-04-18  9:16 ` [PATCH 39/72] tracing: Fix double free when function profile init failed Luis Henriques
2013-04-18  9:16 ` [PATCH 40/72] r8169: fix auto speed down issue Luis Henriques
2013-04-18  9:16 ` [PATCH 41/72] x86: Fix rebuild with EFI_STUB enabled Luis Henriques
2013-04-18  9:16 ` [PATCH 42/72] msi-wmi: Fix memory leak Luis Henriques
2013-04-18  9:16 ` [PATCH 43/72] DRM/i915: Add QUIRK_INVERT_BRIGHTNESS for NCR machines Luis Henriques
2013-04-18  9:16 ` [PATCH 44/72] drm/i915: add quirk to invert brightness on eMachines G725 Luis Henriques
2013-04-18  9:16 ` [PATCH 45/72] drm/i915: add quirk to invert brightness on eMachines e725 Luis Henriques
2013-04-18  9:16 ` [PATCH 46/72] drm/i915: add quirk to invert brightness on Packard Bell NCL20 Luis Henriques
2013-04-18  9:16 ` [PATCH 47/72] block: avoid using uninitialized value in from queue_var_store Luis Henriques
2013-04-18  9:16 ` [PATCH 48/72] ALSA: usb-audio: fix endianness bug in snd_nativeinstruments_* Luis Henriques
2013-04-18  9:16 ` [PATCH 49/72] PM / reboot: call syscore_shutdown() after disable_nonboot_cpus() Luis Henriques
2013-04-18  9:16 ` [PATCH 50/72] ASoC: wm8903: Fix the bypass to HP/LINEOUT when no DAC or ADC is running Luis Henriques
2013-04-18  9:16 ` [PATCH 51/72] drm/i915: Use the correct size of the GTT for placing the per-process entries Luis Henriques
2013-04-18  9:16 ` [PATCH 52/72] GFS2: Fix unlock of fcntl locks during withdrawn state Luis Henriques
2013-04-18  9:16 ` [PATCH 53/72] libsas: fix handling vacant phy in sas_set_ex_phy() Luis Henriques
2013-04-18  9:16 ` [PATCH 54/72] sched_clock: Prevent 64bit inatomicity on 32bit systems Luis Henriques
2013-04-18  9:16 ` [PATCH 55/72] x86, mm, paravirt: Fix vmalloc_fault oops during lazy MMU updates Luis Henriques
2013-04-18  9:16 ` [PATCH 56/72] x86, mm: Patch out arch_flush_lazy_mmu_mode() when running on bare metal Luis Henriques
2013-04-18  9:16 ` [PATCH 57/72] cifs: Allow passwords which begin with a delimitor Luis Henriques
2013-04-18  9:16 ` [PATCH 58/72] target: Fix incorrect fallthrough of ALUA Standby/Offline/Transition CDBs Luis Henriques
2013-04-18  9:16 ` [PATCH 59/72] udl: handle EDID failure properly Luis Henriques
2013-04-18  9:16 ` [PATCH 60/72] tracing: Fix possible NULL pointer dereferences Luis Henriques
2013-04-18  9:16 ` [PATCH 61/72] ftrace: Move ftrace_filter_lseek out of CONFIG_DYNAMIC_FTRACE section Luis Henriques
2013-04-18  9:16 ` [PATCH 62/72] Btrfs: make sure nbytes are right after log replay Luis Henriques
2013-04-18  9:16 ` [PATCH 63/72] kobject: fix kset_find_obj() race with concurrent last kobject_put() Luis Henriques
2013-04-18  9:16 ` [PATCH 64/72] vfs: Revert spurious fix to spinning prevention in prune_icache_sb Luis Henriques
2013-04-18  9:16 ` [PATCH 65/72] kref: Implement kref_get_unless_zero v3 Luis Henriques
2013-04-18  9:16 ` [PATCH 66/72] mtdchar: fix offset overflow detection Luis Henriques
2013-04-22  3:56   ` Ben Hutchings
2013-04-22  8:51     ` Luis Henriques
2013-04-18  9:16 ` [PATCH 67/72] fbcon: fix locking harder Luis Henriques
2013-04-18  9:16 ` [PATCH 68/72] hrtimer: Don't reinitialize a cpu_base lock on CPU_UP Luis Henriques
2013-04-18  9:16 ` [PATCH 69/72] ARM: Do 15e0d9e37c (ARM: pm: let platforms select cpu_suspend support) properly Luis Henriques
2013-04-18  9:16 ` [PATCH 70/72] efivars: Allow disabling use as a pstore backend Luis Henriques
2013-04-18  9:16 ` [PATCH 71/72] efivars: Add module parameter to disable " Luis Henriques
2013-04-18  9:16 ` [PATCH 72/72] efivars: Fix check for CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE Luis Henriques

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1366276617-3553-4-git-send-email-luis.henriques@canonical.com \
    --to=luis.henriques@canonical.com \
    --cc=broonie@opensource.wolfsonmicro.com \
    --cc=kernel-team@lists.ubuntu.com \
    --cc=ks.giri@samsung.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®