Messages in this thread Patch in this message | | | Date | Mon, 14 Nov 2011 17:13:21 +0900 | Subject | [PATCH v2 2/2] HWMON: support in-kernel HWMON API: NTC, S3C-HWMON, Exynos4-TMU | From | MyungJoo Ham <> |
| |
Supports in-kernel HWMON interfaces for 1. NTC Thermistor 2. Exynos4 TMU 3. S3C-HWMON device drivers.
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> --- drivers/hwmon/exynos4_tmu.c | 2 ++ drivers/hwmon/ntc_thermistor.c | 2 ++ drivers/hwmon/s3c-hwmon.c | 10 ++++++++++ 3 files changed, 14 insertions(+), 0 deletions(-)
diff --git a/drivers/hwmon/exynos4_tmu.c b/drivers/hwmon/exynos4_tmu.c index faa0884..f9566b9 100644 --- a/drivers/hwmon/exynos4_tmu.c +++ b/drivers/hwmon/exynos4_tmu.c @@ -431,6 +431,8 @@ static int __devinit exynos4_tmu_probe(struct platform_device *pdev) goto err_create_group; }
+ hwmon_register_properties(data->hwmon_dev, &exynos4_tmu_attr_group); + exynos4_tmu_control(pdev, true);
return 0; diff --git a/drivers/hwmon/ntc_thermistor.c b/drivers/hwmon/ntc_thermistor.c index eab1161..21060ff 100644 --- a/drivers/hwmon/ntc_thermistor.c +++ b/drivers/hwmon/ntc_thermistor.c @@ -389,6 +389,8 @@ static int __devinit ntc_thermistor_probe(struct platform_device *pdev) goto err_after_sysfs; }
+ hwmon_register_properties(data->hwmon_dev, &ntc_attr_group); + dev_info(&pdev->dev, "Thermistor %s:%d (type: %s/%lu) successfully probed.\n", pdev->name, pdev->id, pdev->id_entry->name, pdev->id_entry->driver_data); diff --git a/drivers/hwmon/s3c-hwmon.c b/drivers/hwmon/s3c-hwmon.c index b39f52e..e003001 100644 --- a/drivers/hwmon/s3c-hwmon.c +++ b/drivers/hwmon/s3c-hwmon.c @@ -227,6 +227,8 @@ static int s3c_hwmon_create_attr(struct device *dev, { struct sensor_device_attribute *attr; int ret; + struct platform_device = to_platform_device(dev); + struct s3c_hwmon *hwmon = platform_get_drvdata(pdev, hwmon);
snprintf(attrs->in_name, sizeof(attrs->in_name), "in%d_input", channel);
@@ -242,6 +244,7 @@ static int s3c_hwmon_create_attr(struct device *dev, dev_err(dev, "failed to create input attribute\n"); return ret; } + hwmon_register_property(hwmon->hwmon_dev, &attr->dev_attr);
/* if this has a name, add a label */ if (cfg->name) { @@ -260,6 +263,7 @@ static int s3c_hwmon_create_attr(struct device *dev, device_remove_file(dev, &attrs->in.dev_attr); dev_err(dev, "failed to create label attribute\n"); } + hwmon_register_property(hwmon->hwmon_dev, &attr->dev_attr); }
return ret; @@ -268,6 +272,12 @@ static int s3c_hwmon_create_attr(struct device *dev, static void s3c_hwmon_remove_attr(struct device *dev, struct s3c_hwmon_attr *attrs) { + /* + * hwmon_unregister_property is not needed for this as + * hwmon_device_unregister() is always called in the paths + * when s3c_hwmon_revoce_attr() is called. And hwmon_device_unregister + * calls hwmon_unregister_property for all properties. + */ device_remove_file(dev, &attrs->in.dev_attr); device_remove_file(dev, &attrs->label.dev_attr); } -- 1.7.4.1
| |