Re: [hwmon PATCH v3 4/6] hwmon: (adt7470) Fix swapped PWM3 and PWM4 auto mode masks
Luiz Angelo Daros de Luca <[email protected]> Mon, 27 Jul 2026 15:09:00 -0300
| Newsgroups | org.kernel.vger.linux-hwmon,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <CAJq09z5Etg_1LvEyN10ZmZMPJ602SDG3apdK+j8mDm1A8CoR=g@mail.gmail.com> |
> On 7/26/26 20:34, Luiz Angelo Daros de Luca wrote: > > The ADT7470_PWM3_AUTO_MASK and ADT7470_PWM4_AUTO_MASK macros are > > currently defined with swapped bit values. > > > > According to Table 22 of the ADT7470 datasheet, the Fan Control Mode > > Configuration for register 0x69 follows the exact same bit position > > layout as register 0x68: > > - 0x68 Bit[7] corresponds to BHVR1 (PWM1) -> 0x80 > > - 0x68 Bit[6] corresponds to BHVR2 (PWM2) -> 0x40 > > - 0x69 Bit[7] corresponds to BHVR3 (PWM3) -> 0x80 > > - 0x69 Bit[6] corresponds to BHVR4 (PWM4) -> 0x40 > > > > Consequently, PWM3 should use mask 0x80 and PWM4 should use 0x40. > > > > This typo did not cause any functional bugs because these specific > > macros are never referenced in the driver code. Instead, the driver > > correctly applies the configuration by relying on the modulo parity of > > the channel index (e.g., `channel % 2`) to selectively apply either > > ADT7470_PWM1_AUTO_MASK (0x80) or ADT7470_PWM2_AUTO_MASK (0x40). > > Since the bit layout is identical between the two configuration > > registers, the hardware is currently configured correctly. > > > > Fix the macro definitions to reflect the datasheet accurately and > > prevent future bugs or confusion during code review and refactoring. > > As this is a purely cosmetic fix with no functional impact, a backport > > to stable kernels is not necessary. If you build with W=2, you indeed get tons of unused macros... Initially, I intended to just drop them. However, just like the incorrect macro led Sashiko (and other bots) to assume the masks were swapped, keeping them correctly defined serves as useful context directly in the code. If we drop them entirely, anyone (or any AI agent/tool analyzing the driver) would need to fetch and parse the datasheet to verify the register layout. While the datasheet is the ultimate source of truth, reading PDF tables costs more than reading well-defined driver constants, to the point that agents might simply skip it. We could certainly drop the unused macros and add a comment explaining the layout, or even rename them to better reflect their shared usage across channels (e.g., ADT7470_PWM_ODD_AUTO_MASK and ADT7470_PWM_EVEN_AUTO_MASK). That said, simply fixing the unused definition feels like the cleanest and least verbose option. What do you think? > If the masks are unused, how about just dropping the definitions instead > (including the unused ADT7470_REG_PWM12_CFG and ADT7470_REG_PWM34_CFG) ? > That could be done as first patch of the series. I'm almost afraid of touching anything else here! Fixing bugs in this driver feels like fighting a hydra: every time you address one, the Sashiko bot sprouts two more. :-) I already have seven. Regards, Luiz