can: sja1000: fix handling on dt properties on little endian systems

commit 0443de5fbf 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 <chf.fritz@googlemail.com>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Christoph Fritz 2013-04-11 21:32:57 +02:00 committed by Greg Kroah-Hartman
parent 110360768e
commit 4f969dd6ce

View file

@ -94,8 +94,8 @@ static int __devinit sja1000_ofp_probe(struct platform_device *ofdev)
struct net_device *dev; struct net_device *dev;
struct sja1000_priv *priv; struct sja1000_priv *priv;
struct resource res; struct resource res;
const u32 *prop; u32 prop;
int err, irq, res_size, prop_size; int err, irq, res_size;
void __iomem *base; void __iomem *base;
err = of_address_to_resource(np, 0, &res); err = of_address_to_resource(np, 0, &res);
@ -136,27 +136,27 @@ static int __devinit sja1000_ofp_probe(struct platform_device *ofdev)
priv->read_reg = sja1000_ofp_read_reg; priv->read_reg = sja1000_ofp_read_reg;
priv->write_reg = sja1000_ofp_write_reg; priv->write_reg = sja1000_ofp_write_reg;
prop = of_get_property(np, "nxp,external-clock-frequency", &prop_size); err = of_property_read_u32(np, "nxp,external-clock-frequency", &prop);
if (prop && (prop_size == sizeof(u32))) if (!err)
priv->can.clock.freq = *prop / 2; priv->can.clock.freq = prop / 2;
else else
priv->can.clock.freq = SJA1000_OFP_CAN_CLOCK; /* default */ priv->can.clock.freq = SJA1000_OFP_CAN_CLOCK; /* default */
prop = of_get_property(np, "nxp,tx-output-mode", &prop_size); err = of_property_read_u32(np, "nxp,tx-output-mode", &prop);
if (prop && (prop_size == sizeof(u32))) if (!err)
priv->ocr |= *prop & OCR_MODE_MASK; priv->ocr |= prop & OCR_MODE_MASK;
else else
priv->ocr |= OCR_MODE_NORMAL; /* default */ priv->ocr |= OCR_MODE_NORMAL; /* default */
prop = of_get_property(np, "nxp,tx-output-config", &prop_size); err = of_property_read_u32(np, "nxp,tx-output-config", &prop);
if (prop && (prop_size == sizeof(u32))) if (!err)
priv->ocr |= (*prop << OCR_TX_SHIFT) & OCR_TX_MASK; priv->ocr |= (prop << OCR_TX_SHIFT) & OCR_TX_MASK;
else else
priv->ocr |= OCR_TX0_PULLDOWN; /* default */ priv->ocr |= OCR_TX0_PULLDOWN; /* default */
prop = of_get_property(np, "nxp,clock-out-frequency", &prop_size); err = of_property_read_u32(np, "nxp,clock-out-frequency", &prop);
if (prop && (prop_size == sizeof(u32)) && *prop) { if (!err && prop) {
u32 divider = priv->can.clock.freq * 2 / *prop; u32 divider = priv->can.clock.freq * 2 / prop;
if (divider > 1) if (divider > 1)
priv->cdr |= divider / 2 - 1; priv->cdr |= divider / 2 - 1;
@ -166,8 +166,7 @@ static int __devinit sja1000_ofp_probe(struct platform_device *ofdev)
priv->cdr |= CDR_CLK_OFF; /* default */ priv->cdr |= CDR_CLK_OFF; /* default */
} }
prop = of_get_property(np, "nxp,no-comparator-bypass", NULL); if (!of_property_read_bool(np, "nxp,no-comparator-bypass"))
if (!prop)
priv->cdr |= CDR_CBP; /* default */ priv->cdr |= CDR_CBP; /* default */
priv->irq_flags = IRQF_SHARED; priv->irq_flags = IRQF_SHARED;