Re: [PATCH] thermal: int340x: Use IMOK independently

From: srinivas pandruvada
Date: Mon Jul 19 2021 - 14:27:30 EST


On Fri, 2021-07-16 at 22:09 +0530, Sumeet Pawnikar wrote:
> Some chrome platform requires IMOK method in coreboot. But these
> platforms
> don't use GDDV data vault in coreboot. As per current code flow, to
> enable
> and use IMOK only, we need to have GDDV support as well in coreboot.
> This
> patch removes the dependency for IMOK from GDDV to enable and use IMOK
> independently.
>
> Signed-off-by: Sumeet Pawnikar <sumeet.r.pawnikar@xxxxxxxxx>
Acked-by: Srinivas Pandruvada <srinivas.pandruvada@xxxxxxxxxxxxxxx>

> ---
>  .../intel/int340x_thermal/int3400_thermal.c        | 14 +++++++++++++-
>  1 file changed, 13 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/thermal/intel/int340x_thermal/int3400_thermal.c
> b/drivers/thermal/intel/int340x_thermal/int3400_thermal.c
> index 823354a1a91a..19926beeb3b7 100644
> --- a/drivers/thermal/intel/int340x_thermal/int3400_thermal.c
> +++ b/drivers/thermal/intel/int340x_thermal/int3400_thermal.c
> @@ -108,9 +108,12 @@ static struct attribute *imok_attr[] = {
>         NULL
>  };
>  
> +static const struct attribute_group imok_attribute_group = {
> +       .attrs = imok_attr,
> +};
> +
>  static const struct attribute_group data_attribute_group = {
>         .bin_attrs = data_attributes,
> -       .attrs = imok_attr,
>  };
>  
>  static ssize_t available_uuids_show(struct device *dev,
> @@ -522,6 +525,12 @@ static int int3400_thermal_probe(struct
> platform_device *pdev)
>         if (result)
>                 goto free_rel_misc;
>  
> +       if (acpi_has_method(priv->adev->handle, "IMOK")) {
> +               result = sysfs_create_group(&pdev->dev.kobj,
> &imok_attribute_group);
> +               if (result)
> +                       goto free_imok;
> +       }
> +
>         if (priv->data_vault) {
>                 result = sysfs_create_group(&pdev->dev.kobj,
>                                             &data_attribute_group);
> @@ -545,6 +554,8 @@ static int int3400_thermal_probe(struct
> platform_device *pdev)
>         }
>  free_uuid:
>         sysfs_remove_group(&pdev->dev.kobj, &uuid_attribute_group);
> +free_imok:
> +       sysfs_remove_group(&pdev->dev.kobj, &imok_attribute_group);
>  free_rel_misc:
>         if (!priv->rel_misc_dev_res)
>                 acpi_thermal_rel_misc_device_remove(priv->adev-
> >handle);
> @@ -573,6 +584,7 @@ static int int3400_thermal_remove(struct
> platform_device *pdev)
>         if (priv->data_vault)
>                 sysfs_remove_group(&pdev->dev.kobj,
> &data_attribute_group);
>         sysfs_remove_group(&pdev->dev.kobj, &uuid_attribute_group);
> +       sysfs_remove_group(&pdev->dev.kobj, &imok_attribute_group);
>         thermal_zone_device_unregister(priv->thermal);
>         kfree(priv->data_vault);
>         kfree(priv->trts);