soc: fsl: qe: qe.c: use of_property_read_* helpers
authorRasmus Villemoes <linux@rasmusvillemoes.dk>
Thu, 28 Nov 2019 14:55:27 +0000 (15:55 +0100)
committerLi Yang <leoyang.li@nxp.com>
Mon, 9 Dec 2019 19:54:33 +0000 (13:54 -0600)
Instead of manually doing of_get_property/of_find_property and reading
the value by assigning to a u32* or u64* and dereferencing, use the
of_property_read_* functions.

This make the code more readable, and more importantly, is required
for this to work correctly on little-endian platforms.

Reviewed-by: Timur Tabi <timur@kernel.org>
Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
Signed-off-by: Li Yang <leoyang.li@nxp.com>
drivers/soc/fsl/qe/qe.c

index a476328..ec51184 100644 (file)
@@ -159,8 +159,7 @@ static unsigned int brg_clk = 0;
 unsigned int qe_get_brg_clk(void)
 {
        struct device_node *qe;
-       int size;
-       const u32 *prop;
+       u32 brg;
        unsigned int mod;
 
        if (brg_clk)
@@ -170,9 +169,8 @@ unsigned int qe_get_brg_clk(void)
        if (!qe)
                return brg_clk;
 
-       prop = of_get_property(qe, "brg-frequency", &size);
-       if (prop && size == sizeof(*prop))
-               brg_clk = *prop;
+       if (!of_property_read_u32(qe, "brg-frequency", &brg))
+               brg_clk = brg;
 
        of_node_put(qe);
 
@@ -571,11 +569,9 @@ EXPORT_SYMBOL(qe_upload_firmware);
 struct qe_firmware_info *qe_get_firmware_info(void)
 {
        static int initialized;
-       struct property *prop;
        struct device_node *qe;
        struct device_node *fw = NULL;
        const char *sprop;
-       unsigned int i;
 
        /*
         * If we haven't checked yet, and a driver hasn't uploaded a firmware
@@ -609,20 +605,11 @@ struct qe_firmware_info *qe_get_firmware_info(void)
                strlcpy(qe_firmware_info.id, sprop,
                        sizeof(qe_firmware_info.id));
 
-       prop = of_find_property(fw, "extended-modes", NULL);
-       if (prop && (prop->length == sizeof(u64))) {
-               const u64 *iprop = prop->value;
-
-               qe_firmware_info.extended_modes = *iprop;
-       }
+       of_property_read_u64(fw, "extended-modes",
+                            &qe_firmware_info.extended_modes);
 
-       prop = of_find_property(fw, "virtual-traps", NULL);
-       if (prop && (prop->length == 32)) {
-               const u32 *iprop = prop->value;
-
-               for (i = 0; i < ARRAY_SIZE(qe_firmware_info.vtraps); i++)
-                       qe_firmware_info.vtraps[i] = iprop[i];
-       }
+       of_property_read_u32_array(fw, "virtual-traps", qe_firmware_info.vtraps,
+                                  ARRAY_SIZE(qe_firmware_info.vtraps));
 
        of_node_put(fw);
 
@@ -633,17 +620,13 @@ EXPORT_SYMBOL(qe_get_firmware_info);
 unsigned int qe_get_num_of_risc(void)
 {
        struct device_node *qe;
-       int size;
        unsigned int num_of_risc = 0;
-       const u32 *prop;
 
        qe = qe_get_device_node();
        if (!qe)
                return num_of_risc;
 
-       prop = of_get_property(qe, "fsl,qe-num-riscs", &size);
-       if (prop && size == sizeof(*prop))
-               num_of_risc = *prop;
+       of_property_read_u32(qe, "fsl,qe-num-riscs", &num_of_risc);
 
        of_node_put(qe);