• Stephen Kitt's avatar
    hwmon: use simple i2c probe · deeab9ea
    Stephen Kitt authored
    All these drivers have an i2c probe function which doesn't use the
    "struct i2c_device_id *id" parameter, so they can trivially be
    converted to the "probe_new" style of probe with a single argument.
    
    This is part of an ongoing transition to single-argument i2c probe
    functions. Old-style probe functions involve a call to i2c_match_id:
    in drivers/i2c/i2c-core-base.c,
    
             /*
              * When there are no more users of probe(),
              * rename probe_new to probe.
              */
             if (driver->probe_new)
                     status = driver->probe_new(client);
             else if (driver->probe)
                     status = driver->probe(client,
                                            i2c_match_id(driver->id_table, client));
             else
                     status = -EINVAL;
    
    Drivers which don't need the second parameter can be declared using
    probe_new instead, avoiding the call to i2c_match_id. Drivers which do
    can still be converted to probe_new-style, calling i2c_match_id
    themselves (as is done currently for of_match_id).
    
    This change was done using the following Coccinelle script, and fixed
    up for whitespace changes:
    
    @ rule1 @
    identifier fn;
    identifier client, id;
    @@
    
    - static int fn(struct i2c_client *client, const struct i2c_device_id *id)
    + static int fn(struct i2c_client *client)
    {
    ...when != id
    }
    
    @ rule2 depends on rule1 @
    identifier rule1.fn;
    identifier driver;
    @@
    
    struct i2c_driver driver = {
    -       .probe
    +       .probe_new
                    =
    (
                       fn
    |
    -                  &fn
    +                  fn
    )
                    ,
    };
    Signed-off-by: default avatarStephen Kitt <steve@sk2.org>
    Link: https://lore.kernel.org/r/20221011143309.3141267-1-steve@sk2.orgSigned-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
    deeab9ea
aht10.c 8.13 KB