From: Greg Kroah-Hartman Date: Wed, 17 Apr 2013 18:52:07 +0000 (-0700) Subject: 3.8-stable patches X-Git-Tag: v3.8.9~27 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=3a94924cef120e260ebb2505c3409e64cd243f73;p=thirdparty%2Fkernel%2Fstable-queue.git 3.8-stable patches added patches: can-mcp251x-add-missing-irqf_oneshot-to-request_threaded_irq.patch can-sja1000-fix-handling-on-dt-properties-on-little-endian-systems.patch --- diff --git a/queue-3.8/can-mcp251x-add-missing-irqf_oneshot-to-request_threaded_irq.patch b/queue-3.8/can-mcp251x-add-missing-irqf_oneshot-to-request_threaded_irq.patch new file mode 100644 index 00000000000..5078892fd09 --- /dev/null +++ b/queue-3.8/can-mcp251x-add-missing-irqf_oneshot-to-request_threaded_irq.patch @@ -0,0 +1,53 @@ +From db388d6460ffa53b3b38429da6f70a913f89b048 Mon Sep 17 00:00:00 2001 +From: Marc Kleine-Budde +Date: Thu, 11 Apr 2013 10:08:27 +0200 +Subject: can: mcp251x: add missing IRQF_ONESHOT to request_threaded_irq + +From: Marc Kleine-Budde + +commit db388d6460ffa53b3b38429da6f70a913f89b048 upstream. + +Since commit: + + 1c6c695 genirq: Reject bogus threaded irq requests + +threaded irqs must provide a primary handler or set the IRQF_ONESHOT flag. +Since the mcp251x driver doesn't make use of a primary handler set the +IRQF_ONESHOT flag. + +Reported-by: Mylene Josserand +Tested-by: Mylene Josserand +Signed-off-by: Marc Kleine-Budde +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/net/can/mcp251x.c | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +--- a/drivers/net/can/mcp251x.c ++++ b/drivers/net/can/mcp251x.c +@@ -922,6 +922,7 @@ static int mcp251x_open(struct net_devic + struct mcp251x_priv *priv = netdev_priv(net); + struct spi_device *spi = priv->spi; + struct mcp251x_platform_data *pdata = spi->dev.platform_data; ++ unsigned long flags; + int ret; + + ret = open_candev(net); +@@ -938,9 +939,14 @@ static int mcp251x_open(struct net_devic + priv->tx_skb = NULL; + priv->tx_len = 0; + ++ flags = IRQF_ONESHOT; ++ if (pdata->irq_flags) ++ flags |= pdata->irq_flags; ++ else ++ flags |= IRQF_TRIGGER_FALLING; ++ + ret = request_threaded_irq(spi->irq, NULL, mcp251x_can_ist, +- pdata->irq_flags ? pdata->irq_flags : IRQF_TRIGGER_FALLING, +- DEVICE_NAME, priv); ++ flags, DEVICE_NAME, priv); + if (ret) { + dev_err(&spi->dev, "failed to acquire irq %d\n", spi->irq); + if (pdata->transceiver_enable) diff --git a/queue-3.8/can-sja1000-fix-handling-on-dt-properties-on-little-endian-systems.patch b/queue-3.8/can-sja1000-fix-handling-on-dt-properties-on-little-endian-systems.patch new file mode 100644 index 00000000000..7dd220b9e9f --- /dev/null +++ b/queue-3.8/can-sja1000-fix-handling-on-dt-properties-on-little-endian-systems.patch @@ -0,0 +1,85 @@ +From 0443de5fbf224abf41f688d8487b0c307dc5a4b4 Mon Sep 17 00:00:00 2001 +From: Christoph Fritz +Date: Thu, 11 Apr 2013 21:32:57 +0200 +Subject: can: sja1000: fix handling on dt properties on little endian systems + +From: Christoph Fritz + +commit 0443de5fbf224abf41f688d8487b0c307dc5a4b4 upstream. + +To get correct endianes on little endian cpus (like arm) while reading device +tree properties, this patch replaces of_get_property() with +of_property_read_u32(). While there use of_property_read_bool() for the +handling of the boolean "nxp,no-comparator-bypass" property. + +Signed-off-by: Christoph Fritz +Signed-off-by: Marc Kleine-Budde +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/net/can/sja1000/sja1000_of_platform.c | 31 ++++++++++++-------------- + 1 file changed, 15 insertions(+), 16 deletions(-) + +--- a/drivers/net/can/sja1000/sja1000_of_platform.c ++++ b/drivers/net/can/sja1000/sja1000_of_platform.c +@@ -96,8 +96,8 @@ static int sja1000_ofp_probe(struct plat + struct net_device *dev; + struct sja1000_priv *priv; + struct resource res; +- const u32 *prop; +- int err, irq, res_size, prop_size; ++ u32 prop; ++ int err, irq, res_size; + void __iomem *base; + + err = of_address_to_resource(np, 0, &res); +@@ -138,27 +138,27 @@ static int sja1000_ofp_probe(struct plat + priv->read_reg = sja1000_ofp_read_reg; + priv->write_reg = sja1000_ofp_write_reg; + +- prop = of_get_property(np, "nxp,external-clock-frequency", &prop_size); +- if (prop && (prop_size == sizeof(u32))) +- priv->can.clock.freq = *prop / 2; ++ err = of_property_read_u32(np, "nxp,external-clock-frequency", &prop); ++ if (!err) ++ priv->can.clock.freq = prop / 2; + else + priv->can.clock.freq = SJA1000_OFP_CAN_CLOCK; /* default */ + +- prop = of_get_property(np, "nxp,tx-output-mode", &prop_size); +- if (prop && (prop_size == sizeof(u32))) +- priv->ocr |= *prop & OCR_MODE_MASK; ++ err = of_property_read_u32(np, "nxp,tx-output-mode", &prop); ++ if (!err) ++ priv->ocr |= prop & OCR_MODE_MASK; + else + priv->ocr |= OCR_MODE_NORMAL; /* default */ + +- prop = of_get_property(np, "nxp,tx-output-config", &prop_size); +- if (prop && (prop_size == sizeof(u32))) +- priv->ocr |= (*prop << OCR_TX_SHIFT) & OCR_TX_MASK; ++ err = of_property_read_u32(np, "nxp,tx-output-config", &prop); ++ if (!err) ++ priv->ocr |= (prop << OCR_TX_SHIFT) & OCR_TX_MASK; + else + priv->ocr |= OCR_TX0_PULLDOWN; /* default */ + +- prop = of_get_property(np, "nxp,clock-out-frequency", &prop_size); +- if (prop && (prop_size == sizeof(u32)) && *prop) { +- u32 divider = priv->can.clock.freq * 2 / *prop; ++ err = of_property_read_u32(np, "nxp,clock-out-frequency", &prop); ++ if (!err && prop) { ++ u32 divider = priv->can.clock.freq * 2 / prop; + + if (divider > 1) + priv->cdr |= divider / 2 - 1; +@@ -168,8 +168,7 @@ static int sja1000_ofp_probe(struct plat + priv->cdr |= CDR_CLK_OFF; /* default */ + } + +- prop = of_get_property(np, "nxp,no-comparator-bypass", NULL); +- if (!prop) ++ if (!of_property_read_bool(np, "nxp,no-comparator-bypass")) + priv->cdr |= CDR_CBP; /* default */ + + priv->irq_flags = IRQF_SHARED; diff --git a/queue-3.8/series b/queue-3.8/series index 5fcde3679cd..d03f952e6f8 100644 --- a/queue-3.8/series +++ b/queue-3.8/series @@ -3,3 +3,5 @@ kvm-powerpc-e500mc-fix-tlb-invalidation-on-cpu-migration.patch arm-do-15e0d9e37c-arm-pm-let-platforms-select-cpu_suspend-support-properly.patch kthread-prevent-unpark-race-which-puts-threads-on-the-wrong-cpu.patch hrtimer-don-t-reinitialize-a-cpu_base-lock-on-cpu_up.patch +can-mcp251x-add-missing-irqf_oneshot-to-request_threaded_irq.patch +can-sja1000-fix-handling-on-dt-properties-on-little-endian-systems.patch