mtd: Fix endianness issues from device tree
This patch adds the appropriate conversions to correct the endianness issues in the MTD driver whenever it accesses the device tree (which is always big endian). Signed-off-by: Ian Munsie <imunsie@au1.ibm.com> Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com> Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
This commit is contained in:

zatwierdzone przez
David Woodhouse

rodzic
d86fbdb8ed
commit
766f271a63
@@ -229,7 +229,7 @@ static int __devinit ndfc_probe(struct platform_device *ofdev,
|
||||
const struct of_device_id *match)
|
||||
{
|
||||
struct ndfc_controller *ndfc = &ndfc_ctrl;
|
||||
const u32 *reg;
|
||||
const __be32 *reg;
|
||||
u32 ccr;
|
||||
int err, len;
|
||||
|
||||
@@ -244,7 +244,7 @@ static int __devinit ndfc_probe(struct platform_device *ofdev,
|
||||
dev_err(&ofdev->dev, "unable read reg property (%d)\n", len);
|
||||
return -ENOENT;
|
||||
}
|
||||
ndfc->chip_select = reg[0];
|
||||
ndfc->chip_select = be32_to_cpu(reg[0]);
|
||||
|
||||
ndfc->ndfcbase = of_iomap(ofdev->dev.of_node, 0);
|
||||
if (!ndfc->ndfcbase) {
|
||||
@@ -257,7 +257,7 @@ static int __devinit ndfc_probe(struct platform_device *ofdev,
|
||||
/* It is ok if ccr does not exist - just default to 0 */
|
||||
reg = of_get_property(ofdev->dev.of_node, "ccr", NULL);
|
||||
if (reg)
|
||||
ccr |= *reg;
|
||||
ccr |= be32_to_cpup(reg);
|
||||
|
||||
out_be32(ndfc->ndfcbase + NDFC_CCR, ccr);
|
||||
|
||||
@@ -265,7 +265,7 @@ static int __devinit ndfc_probe(struct platform_device *ofdev,
|
||||
reg = of_get_property(ofdev->dev.of_node, "bank-settings", NULL);
|
||||
if (reg) {
|
||||
int offset = NDFC_BCFG0 + (ndfc->chip_select << 2);
|
||||
out_be32(ndfc->ndfcbase + offset, *reg);
|
||||
out_be32(ndfc->ndfcbase + offset, be32_to_cpup(reg));
|
||||
}
|
||||
|
||||
err = ndfc_chip_init(ndfc, ofdev->dev.of_node);
|
||||
|
Reference in New Issue
Block a user