Re: [PATCH v5 1/1] platform/chrome: add a driver for HPS

From: Tzung-Bi Shih
Date: Wed Oct 12 2022 - 04:47:04 EST


On Wed, Oct 12, 2022 at 03:09:18PM +1100, Dan Callaghan wrote:
> ---

It doesn't need a cover letter if the series only has 1 patch in general.
Instead, it could put additional information (and changelogs) after "---".

> diff --git a/drivers/platform/chrome/cros_hps_i2c.c b/drivers/platform/chrome/cros_hps_i2c.c
[...]
> +static int hps_i2c_probe(struct i2c_client *client)
> +{
> + struct hps_drvdata *hps;
> + int ret;
> +
> + hps = devm_kzalloc(&client->dev, sizeof(*hps), GFP_KERNEL);
> + if (!hps)
> + return -ENOMEM;
> +
> + memset(&hps->misc_device, 0, sizeof(hps->misc_device));

The memset can be dropped. `hps` is z-allocated.

> + hps->misc_device.parent = &client->dev;
> + hps->misc_device.minor = MISC_DYNAMIC_MINOR;
> + hps->misc_device.name = "cros-hps";
> + hps->misc_device.fops = &hps_fops;
> +
> + i2c_set_clientdata(client, hps);
> + hps->client = client;

To be neat, I would prefer to insert a blank line here.

> + hps->enable_gpio = devm_gpiod_get(&client->dev, "enable", GPIOD_OUT_HIGH);
> + if (IS_ERR(hps->enable_gpio)) {
> + ret = PTR_ERR(hps->enable_gpio);
> + dev_err(&client->dev, "failed to get enable gpio: %d\n", ret);
> + return ret;
> + }
> +
> + ret = misc_register(&hps->misc_device);
> + if (ret) {
> + dev_err(&client->dev, "failed to initialize misc device: %d\n", ret);
> + return ret;
> + }
> +
> + hps_set_power(hps, false);

IIUC, the GPIO will raise to HIGH in the first place, and then fall
to LOW until here. Is it an expected behavior? How about gpiod_get()
with GPIOD_OUT_LOW?

> +static int hps_i2c_remove(struct i2c_client *client)
> +{
> + struct hps_drvdata *hps = i2c_get_clientdata(client);
> +
> + pm_runtime_disable(&client->dev);
> + misc_deregister(&hps->misc_device);
> + hps_set_power(hps, true);

Why does it need to raise the GPIO again when removing the device?