From febeff4e487b236b8007dcc4cb65428c2530ef33 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Wed, 17 Apr 2013 11:54:10 -0700 Subject: [PATCH] 3.0-stable patches added patches: can-sja1000-fix-handling-on-dt-properties-on-little-endian-systems.patch --- ...-properties-on-little-endian-systems.patch | 85 +++++++++++++++++++ queue-3.0/series | 1 + 2 files changed, 86 insertions(+) create mode 100644 queue-3.0/can-sja1000-fix-handling-on-dt-properties-on-little-endian-systems.patch diff --git a/queue-3.0/can-sja1000-fix-handling-on-dt-properties-on-little-endian-systems.patch b/queue-3.0/can-sja1000-fix-handling-on-dt-properties-on-little-endian-systems.patch new file mode 100644 index 00000000000..2925684e2cb --- /dev/null +++ b/queue-3.0/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 +@@ -93,8 +93,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); +@@ -135,27 +135,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; +@@ -165,8 +165,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.0/series b/queue-3.0/series index 569ed215c8a..5e715a09778 100644 --- a/queue-3.0/series +++ b/queue-3.0/series @@ -1,2 +1,3 @@ hrtimer-don-t-reinitialize-a-cpu_base-lock-on-cpu_up.patch revert-8021q-fix-a-potential-use-after-free.patch +can-sja1000-fix-handling-on-dt-properties-on-little-endian-systems.patch -- 2.47.3