On Mon, 2017-03-13 at 17:20 +0800, meng...@windriver.com wrote:
[...]
> +/**
> + * tpm_create_sysfs - Create tpm sysfs interface.
> + * @dev:     pointer to tpm chip device
> + *
> + * Create sysfs interface for checking current TPM hardware version.
> + */
> +static int tpm_create_sysfs(struct device *dev)
> +{
> +     int r, t;
> +
> +     for (t = 0; t < ARRAY_SIZE(tpm_attrs); t++) {
> +             r = device_create_file(dev, &tpm_attrs[t]);
> +             if (r) {
> +                     dev_err(dev, "failed to create sysfs
> file\n");
> +                     return r;
> +             }
> +     }
> +
> +     return 0;
> +}
> +
> +/**
> + * tpm_remove_sysfs - Remove tpm sysfs interface.
> + * @dev:     pointer to tpm chip device
> + *
> + * Remove sysfs interface for checking current TPM hardware version.
> + */
> +static void tpm_remove_sysfs(struct device *dev)
> +{
> +     int  t;
> +
> +     for (t = 0; t < ARRAY_SIZE(tpm_attrs); t++) {
> +             device_remove_file(dev, &tpm_attrs[t]);
> +     }
> +}
> +

For non-dynamic attributes, use the attribute_group structure in the
device instead.  It will take care of creation and removal
automatically.

James

Reply via email to