fan_speed: Always write target prop to sysfs

Leave it up to the fan control application on when to write the fan
target value to the hardware and just always do it instead of throwing
away the write if the previous property value was the same.

This protects against the case when the fan control device resets
itself, such as due to an internal watchdog failure, and sets its
registers to a default that doesn't match sysfs or D-Bus.  Now if fan
control writes the target property again, even if it is the same, it
will restore the actual value to what is desired.

Tested:

1. Write directly to sysfs fan*_target to change the value from what is
   on D-Bus.
2. Use busctl set-property to set the Target property to the same value
   it already is.
3. Ensure the fan*_target file changes back to the value.

Change-Id: Ib71567e08118f1367610ec311a4b990a4e5019c9
Signed-off-by: Matt Spinler <spinler@us.ibm.com>
1 file changed
tree: 843fadd3491db98de343d9a4f74d2474d1b0c868
  1. msl/
  2. subprojects/
  3. test/
  4. tools/
  5. .clang-format
  6. .gitignore
  7. .lcovrc
  8. .shellcheck
  9. 70-hwmon.rules
  10. 70-iio.rules
  11. average.cpp
  12. average.hpp
  13. env.cpp
  14. env.hpp
  15. fan_pwm.cpp
  16. fan_pwm.hpp
  17. fan_speed.cpp
  18. fan_speed.hpp
  19. gpio_handle.cpp
  20. gpio_handle.hpp
  21. hwmon.cpp
  22. hwmon.hpp
  23. hwmonio.cpp
  24. hwmonio.hpp
  25. interface.hpp
  26. LICENSE
  27. mainloop.cpp
  28. mainloop.hpp
  29. meson.build
  30. meson.options
  31. OWNERS
  32. phosphor-hwmon.conf
  33. readd.cpp
  34. README.iio.md
  35. README.md
  36. sensor.cpp
  37. sensor.hpp
  38. sensorset.cpp
  39. sensorset.hpp
  40. start_hwmon.sh.in
  41. sysfs.cpp
  42. sysfs.hpp
  43. targets.hpp
  44. thresholds.hpp
  45. types.hpp
  46. util.hpp
  47. xyz.openbmc_project.Hwmon@.service
README.md

phosphor-hwmon

Exposes generic hwmon entries as DBus objects. More information can be found at Sensor Architecture

To Build

To build this package, do the following steps:

  1. meson setup build
  2. ninja -C build

To clean the repository run rm -rf build.

D-Bus bus names

To enable the use of Linux features like cgroups prioritization and udev/systemd control, one instance of phosphor-hwmon is intended to be run per hwmon sysfs class instance.

This requires an algorithm for selecting a stable, well-known D-Bus busname.

The algorithm is <PREFIX>-<ID>.Hwmon<N> where PREFIX is a meson configurable prefix (BUSNAME_PREFIX=xyz.openbmc_project by default), ID is either a std::hash of the /sys/devices path backing the hwmon class instance or provided suffix value from the command line, and N is the implemented phosphor-hwmon D-Bus API version.