diff options
author | Wolfram Sang <wsa@the-dreams.de> | 2018-01-18 13:11:33 +0100 |
---|---|---|
committer | Wolfram Sang <wsa@the-dreams.de> | 2018-02-26 20:40:46 +0100 |
commit | a1671af2863376abb9f200c5db3c9097c0490e87 (patch) | |
tree | 122a96379e61b616c1ee2705c6d35b26887f9652 /drivers/i2c/i2c-core-of.c | |
parent | 4f3ae38acb3c93cbd8aab9a9fb76d5f661ab578d (diff) | |
download | linux-a1671af2863376abb9f200c5db3c9097c0490e87.tar.bz2 |
i2c: of: simplify reading the "reg" property
of_get_property() is a bit cumbersome to use. Replace it with the newer
of_property_read_u32() for more readable code.
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
Diffstat (limited to 'drivers/i2c/i2c-core-of.c')
-rw-r--r-- | drivers/i2c/i2c-core-of.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/drivers/i2c/i2c-core-of.c b/drivers/i2c/i2c-core-of.c index bbfff3f61b1f..c405270a98b4 100644 --- a/drivers/i2c/i2c-core-of.c +++ b/drivers/i2c/i2c-core-of.c @@ -4,7 +4,7 @@ * Copyright (C) 2008 Jochen Friedrich <jochen@scram.de> * based on a previous patch from Jon Smirl <jonsmirl@gmail.com> * - * Copyright (C) 2013 Wolfram Sang <wsa@the-dreams.de> + * Copyright (C) 2013, 2018 Wolfram Sang <wsa@the-dreams.de> * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the Free @@ -28,9 +28,8 @@ static struct i2c_client *of_i2c_register_device(struct i2c_adapter *adap, struct i2c_client *client; struct i2c_board_info info = {}; struct dev_archdata dev_ad = {}; - const __be32 *addr_be; u32 addr; - int len; + int ret; dev_dbg(&adap->dev, "of_i2c: register %pOF\n", node); @@ -40,13 +39,12 @@ static struct i2c_client *of_i2c_register_device(struct i2c_adapter *adap, return ERR_PTR(-EINVAL); } - addr_be = of_get_property(node, "reg", &len); - if (!addr_be || (len < sizeof(*addr_be))) { + ret = of_property_read_u32(node, "reg", &addr); + if (ret) { dev_err(&adap->dev, "of_i2c: invalid reg on %pOF\n", node); - return ERR_PTR(-EINVAL); + return ERR_PTR(ret); } - addr = be32_to_cpup(addr_be); if (addr & I2C_TEN_BIT_ADDRESS) { addr &= ~I2C_TEN_BIT_ADDRESS; info.flags |= I2C_CLIENT_TEN; |