Hi Guenter, Am Dienstag, 13. August 2024, 18:03:57 CEST schrieb Guenter Roeck: > On 8/10/24 11:47, Heiko Stuebner wrote: > > +static int qnap_mcu_hwmon_set_pwm(struct qnap_mcu_hwmon *hwm, u8 pwm) > > +{ > > + const u8 cmd[] = { > > + [0] = 0x40, /* @ */ > > + [1] = 0x46, /* F */ > > + [2] = 0x57, /* W */ > > + [3] = 0x30, /* 0 ... fan-id? */ > > + [4] = pwm > > + }; > > + > > + /* set the fan pwm */ > > + return qnap_mcu_exec_with_ack(hwm->mcu, cmd, sizeof(cmd)); > > +} > > +static int qnap_mcu_hwmon_get_cooling_data(struct device *dev, struct qnap_mcu_hwmon *hwm) > > +{ > > + struct fwnode_handle *fwnode; > > + int num, i, ret; > > + > > + fwnode = device_get_named_child_node(dev->parent, "fan-0"); > > Is the dummy "-0" index mandated somewhere ? I don't think it is. The node should just begin with "fan" I think. I've added the -0 because from everything I've seen of the qnap software- side, the mcu firmware can address multiple fans. In the original firmware, everything is done in userspace wrt. the MCU, and the fan commands in their abstraction layer allow for multiple fans. Also there is that suspicious "0" in the command sequence when getting/setting the fan pwm. And in the original device config this is labeled as the first fan.