Lines Matching +full:factory +full:- +full:programmed

1 // SPDX-License-Identifier: GPL-2.0-only
3 * drivers/hwmon/nsa320-hwmon.c
8 * Copyright (C) 2016 Adam Baker <linux@baker-net.org.uk>
18 #include <linux/hwmon-sysfs.h>
31 * The Zyxel hwmon MCU is a Holtek HT46R065 that is factory programmed
74 mutex_lock(&hwmon->update_lock); in nsa320_hwmon_update()
76 mcu_data = hwmon->mcu_data; in nsa320_hwmon_update()
78 if (time_after(jiffies, hwmon->last_updated + HZ) || mcu_data == 0) { in nsa320_hwmon_update()
79 gpiod_set_value(hwmon->act, 1); in nsa320_hwmon_update()
84 gpiod_set_value(hwmon->clk, 0); in nsa320_hwmon_update()
86 gpiod_set_value(hwmon->clk, 1); in nsa320_hwmon_update()
88 if (gpiod_get_value(hwmon->data)) in nsa320_hwmon_update()
92 gpiod_set_value(hwmon->act, 0); in nsa320_hwmon_update()
97 mcu_data = -EIO; in nsa320_hwmon_update()
99 hwmon->mcu_data = mcu_data; in nsa320_hwmon_update()
100 hwmon->last_updated = jiffies; in nsa320_hwmon_update()
104 mutex_unlock(&hwmon->update_lock); in nsa320_hwmon_update()
112 int channel = to_sensor_dev_attr(attr)->index; in label_show()
155 { .compatible = "zyxel,nsa320-mcu", },
164 hwmon = devm_kzalloc(&pdev->dev, sizeof(*hwmon), GFP_KERNEL); in nsa320_hwmon_probe()
166 return -ENOMEM; in nsa320_hwmon_probe()
169 hwmon->act = devm_gpiod_get(&pdev->dev, "act", GPIOD_OUT_LOW); in nsa320_hwmon_probe()
170 if (IS_ERR(hwmon->act)) in nsa320_hwmon_probe()
171 return PTR_ERR(hwmon->act); in nsa320_hwmon_probe()
173 hwmon->clk = devm_gpiod_get(&pdev->dev, "clk", GPIOD_OUT_HIGH); in nsa320_hwmon_probe()
174 if (IS_ERR(hwmon->clk)) in nsa320_hwmon_probe()
175 return PTR_ERR(hwmon->clk); in nsa320_hwmon_probe()
177 hwmon->data = devm_gpiod_get(&pdev->dev, "data", GPIOD_IN); in nsa320_hwmon_probe()
178 if (IS_ERR(hwmon->data)) in nsa320_hwmon_probe()
179 return PTR_ERR(hwmon->data); in nsa320_hwmon_probe()
181 mutex_init(&hwmon->update_lock); in nsa320_hwmon_probe()
183 classdev = devm_hwmon_device_register_with_groups(&pdev->dev, in nsa320_hwmon_probe()
195 .name = "nsa320-hwmon",
204 MODULE_AUTHOR("Adam Baker <linux@baker-net.org.uk>");
207 MODULE_ALIAS("platform:nsa320-hwmon");