Add option to override of_node to use devpath

Allow us to force phosphor-hwmon to use the devpath to detect even if
the of_name exists. Some system may not be setup properly to have the
hwmon setup matching what we needed. This allow us to have the
flexibility to override some config if we are not able to fix it on the
driver side.

The linux change in
https://github.com/torvalds/linux/commit/2315332efcbe7124252f080e03b57d3d2f1f4771
create the of_node to the device's ancestor instead of having it
missing. This forces multiple devices to be linked to the same node.
This required a single config to support multiple different type of
devices.

This change allow us to avoid that if it is not feasible to fix the
issue on the driver side.

Tested:
Override the devices with devpath only and didn't break other devices.

```
meson build -Doverride-with-devpath=nodeA,nodeB
```

with this if the `of_fullname` has a filename ended with nodeA or
nodeB, then it will not use the `of_fullname` and use the devpath
instead.

Change-Id: I76d05f0cf2aa8de3b7efadea8eb513f4708f049b
Signed-off-by: Willy Tu <wltu@google.com>
4 files changed
tree: 257f9085b3dbc11e1e5ef87bc1e71cbb6ae017bd
  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.txt
  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.