diff mbox series

thermal: int340x: Use IMOK independently

Message ID 20210716163946.3142-1-sumeet.r.pawnikar@intel.com (mailing list archive)
State Mainlined
Delegated to: Zhang Rui
Headers show
Series thermal: int340x: Use IMOK independently | expand

Commit Message

Sumeet Pawnikar July 16, 2021, 4:39 p.m. UTC
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@intel.com>
---
 .../intel/int340x_thermal/int3400_thermal.c        | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

Comments

srinivas pandruvada July 19, 2021, 5:16 p.m. UTC | #1
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@intel.com>
Acked-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>

> ---
>  .../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);
Zhang Rui July 27, 2021, 2:32 a.m. UTC | #2
> -----Original Message-----
> From: Pawnikar, Sumeet R <sumeet.r.pawnikar@intel.com>
> Sent: Saturday, July 17, 2021 12:40 AM
> To: Zhang, Rui <rui.zhang@intel.com>; srinivas.pandruvada@linux.intel.com;
> daniel.lezcano@linaro.org; linux-pm@vger.kernel.org; linux-
> kernel@vger.kernel.org
> Cc: Pawnikar, Sumeet R <sumeet.r.pawnikar@intel.com>
> Subject: [PATCH] thermal: int340x: Use IMOK independently
> Importance: High
> 
> 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@intel.com>

Acked-by: Zhang Rui <rui.zhang@intel.com>

Thanks,
Rui

> ---
>  .../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);
> --
> 2.17.1
diff mbox series

Patch

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);