hwmon: (sl28cpld-hwmon) Use HWMON_CHANNEL_INFO macro
authorGuenter Roeck <linux@roeck-us.net>
Thu, 12 May 2022 19:06:00 +0000 (12:06 -0700)
committerGuenter Roeck <linux@roeck-us.net>
Sun, 22 May 2022 18:32:32 +0000 (11:32 -0700)
The HWMON_CHANNEL_INFO macro simplifies the code, reduces the likelihood
of errors, and makes the code easier to read.

The conversion was done automatically with coccinelle. The semantic patch
used to make this change is as follows.

@s@
identifier i,j,ty;
@@

-struct hwmon_channel_info j = {
-       .type = ty,
-       .config = i,
-};

@r@
initializer list elements;
identifier s.i;
@@

-u32 i[] = {
-  elements,
-  0
-};

@script:ocaml t@
ty << s.ty;
elements << r.elements;
shorter;
elems;
@@

shorter :=
   make_ident (List.hd(List.rev (Str.split (Str.regexp "_") ty)));
elems :=
   make_ident
    (String.concat ","
     (List.map (fun x -> Printf.sprintf "\n\t\t\t   %s" x)
       (Str.split (Str.regexp " , ") elements)))

@@
identifier s.j,t.shorter;
identifier t.elems;
@@

- &j
+ HWMON_CHANNEL_INFO(shorter,elems)

This patch does not introduce functional changes. Many thanks to
Julia Lawall for providing the coccinelle script.

Cc: Michael Walle <michael@walle.cc>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
drivers/hwmon/sl28cpld-hwmon.c

index e48f58ec5b9cf1730c3b2e47f3d34660b5bd6f81..e2fc60bf40bd11c70bc8e2543969657a1cf8b0d8 100644 (file)
@@ -67,18 +67,8 @@ static int sl28cpld_hwmon_read(struct device *dev,
        return 0;
 }
 
-static const u32 sl28cpld_hwmon_fan_config[] = {
-       HWMON_F_INPUT,
-       0
-};
-
-static const struct hwmon_channel_info sl28cpld_hwmon_fan = {
-       .type = hwmon_fan,
-       .config = sl28cpld_hwmon_fan_config,
-};
-
 static const struct hwmon_channel_info *sl28cpld_hwmon_info[] = {
-       &sl28cpld_hwmon_fan,
+       HWMON_CHANNEL_INFO(fan, HWMON_F_INPUT),
        NULL
 };