Skip to content

Commit

Permalink
regmap: Switch to use fwnode instead of OF one
Browse files Browse the repository at this point in the history
Make regmap firmware node type agnostic by switching it to use fwnode.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20200708161232.17914-1-andriy.shevchenko@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
  • Loading branch information
Andy Shevchenko authored and Mark Brown committed Jul 10, 2020
1 parent 31cf2c3 commit c916d6e
Showing 1 changed file with 13 additions and 18 deletions.
31 changes: 13 additions & 18 deletions drivers/base/regmap/regmap.c
Original file line number Diff line number Diff line change
@@ -11,7 +11,7 @@
#include <linux/export.h>
#include <linux/mutex.h>
#include <linux/err.h>
#include <linux/of.h>
#include <linux/property.h>
#include <linux/rbtree.h>
#include <linux/sched.h>
#include <linux/delay.h>
@@ -631,7 +631,7 @@ enum regmap_endian regmap_get_val_endian(struct device *dev,
const struct regmap_bus *bus,
const struct regmap_config *config)
{
struct device_node *np;
struct fwnode_handle *fwnode = dev ? dev_fwnode(dev) : NULL;
enum regmap_endian endian;

/* Retrieve the endianness specification from the regmap config */
@@ -641,22 +641,17 @@ enum regmap_endian regmap_get_val_endian(struct device *dev,
if (endian != REGMAP_ENDIAN_DEFAULT)
return endian;

/* If the dev and dev->of_node exist try to get endianness from DT */
if (dev && dev->of_node) {
np = dev->of_node;

/* Parse the device's DT node for an endianness specification */
if (of_property_read_bool(np, "big-endian"))
endian = REGMAP_ENDIAN_BIG;
else if (of_property_read_bool(np, "little-endian"))
endian = REGMAP_ENDIAN_LITTLE;
else if (of_property_read_bool(np, "native-endian"))
endian = REGMAP_ENDIAN_NATIVE;

/* If the endianness was specified in DT, use that */
if (endian != REGMAP_ENDIAN_DEFAULT)
return endian;
}
/* If the firmware node exist try to get endianness from it */
if (fwnode_property_read_bool(fwnode, "big-endian"))
endian = REGMAP_ENDIAN_BIG;
else if (fwnode_property_read_bool(fwnode, "little-endian"))
endian = REGMAP_ENDIAN_LITTLE;
else if (fwnode_property_read_bool(fwnode, "native-endian"))
endian = REGMAP_ENDIAN_NATIVE;

/* If the endianness was specified in fwnode, use that */
if (endian != REGMAP_ENDIAN_DEFAULT)
return endian;

/* Retrieve the endianness specification from the bus config */
if (bus && bus->val_format_endian_default)

0 comments on commit c916d6e

Please sign in to comment.