On 2021-04-17 22:42, Ryder Lee wrote: > Similar to mt7915, switching to use standard hwmon sysfs. > For reading temperature, cat /sys/class/ieee80211/phy*/hwmon*/temp1_input > > Signed-off-by: Ryder Lee <ryder.lee@xxxxxxxxxxxx> > --- > .../wireless/mediatek/mt76/mt7615/debugfs.c | 20 -------- > .../net/wireless/mediatek/mt76/mt7615/init.c | 50 +++++++++++++++++++ > .../net/wireless/mediatek/mt76/mt7615/mcu.c | 6 +-- > .../wireless/mediatek/mt76/mt7615/mt7615.h | 3 +- > .../wireless/mediatek/mt76/mt7615/pci_init.c | 4 ++ > 5 files changed, 58 insertions(+), 25 deletions(-) > > diff --git a/drivers/net/wireless/mediatek/mt76/mt7615/init.c b/drivers/net/wireless/mediatek/mt76/mt7615/init.c > index d84662fb0304..22ccad43a13e 100644 > --- a/drivers/net/wireless/mediatek/mt76/mt7615/init.c > +++ b/drivers/net/wireless/mediatek/mt76/mt7615/init.c > @@ -8,11 +8,61 @@ > */ > > #include <linux/etherdevice.h> > +#include <linux/hwmon.h> > +#include <linux/hwmon-sysfs.h> > #include "mt7615.h" > #include "mac.h" > #include "mcu.h" > #include "eeprom.h" > > +static ssize_t mt7615_thermal_show_temp(struct device *dev, > + struct device_attribute *attr, > + char *buf) > +{ > + struct mt7615_dev *mdev = dev_get_drvdata(dev); > + int temperature; > + > + if (!mt7615_wait_for_mcu_init(mdev)) > + return 0; > + > + mt7615_mutex_acquire(mdev); > + temperature = mt7615_mcu_get_temperature(mdev); > + mt7615_mutex_release(mdev); > + > + if (temperature < 0) > + return temperature; > + > + /* display in millidegree celcius */ > + return sprintf(buf, "%u\n", temperature * 1000); > +} > + > +static SENSOR_DEVICE_ATTR(temp1_input, 0444, mt7615_thermal_show_temp, > + NULL, 0); > + > +static struct attribute *mt7615_hwmon_attrs[] = { > + &sensor_dev_attr_temp1_input.dev_attr.attr, > + NULL, > +}; > +ATTRIBUTE_GROUPS(mt7615_hwmon); > + > +int mt7615_thermal_init(struct mt7615_dev *dev) > +{ > + struct wiphy *wiphy = mt76_hw(dev)->wiphy; > + struct device *hwmon; > + > + if (!IS_REACHABLE(CONFIG_HWMON)) > + return 0; > + > + hwmon = devm_hwmon_device_register_with_groups(&wiphy->dev, > + wiphy_name(wiphy), phy, This does not compile (wrong variable name). - Felix