From: Greg Kroah-Hartman Date: Wed, 17 Apr 2013 18:53:20 +0000 (-0700) Subject: 3.4-stable patches X-Git-Tag: v3.8.9~26 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=76fe0a3806761a344ffd9ebf8801877d00edf587;p=thirdparty%2Fkernel%2Fstable-queue.git 3.4-stable patches added patches: can-sja1000-fix-handling-on-dt-properties-on-little-endian-systems.patch --- diff --git a/queue-3.4/can-sja1000-fix-handling-on-dt-properties-on-little-endian-systems.patch b/queue-3.4/can-sja1000-fix-handling-on-dt-properties-on-little-endian-systems.patch new file mode 100644 index 00000000000..e8dcab0c7f9 --- /dev/null +++ b/queue-3.4/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 +@@ -94,8 +94,8 @@ static int __devinit sja1000_ofp_probe(s + 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); +@@ -136,27 +136,27 @@ static int __devinit sja1000_ofp_probe(s + 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; +@@ -166,8 +166,7 @@ static int __devinit sja1000_ofp_probe(s + 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.4/series b/queue-3.4/series index 81fe224d375..6659be4bfcd 100644 --- a/queue-3.4/series +++ b/queue-3.4/series @@ -1,2 +1,3 @@ arm-do-15e0d9e37c-arm-pm-let-platforms-select-cpu_suspend-support-properly.patch hrtimer-don-t-reinitialize-a-cpu_base-lock-on-cpu_up.patch +can-sja1000-fix-handling-on-dt-properties-on-little-endian-systems.patch