Hook up a PCIe device into the thermal framework

From: Waldemar Rymarkiewicz
Date: Thu Jan 14 2021 - 12:06:20 EST


Hi,

I've been looking for a nice way to hook up a PCIe device into the
thermal framework recently and I want to confront my findings with the
right people here.

I have a PCIe wireless adapter connected to PCI-to-PCI bridge which in
turns is connected to a PCI root complex (RC). I want to define a
thermal zone over the wireless adapter in my system and control it
over DT (thermal-zones{...}) instead of keeping thermal zone
definition statically in the PCI device driver (as it's done in the
iwlwifi wireless driver or the mlxsw ethernet driver for example)

The issue I have faced is that a PCI device has no DT node
(pci_dev.dev.of_node) which is reasonable as this is by design
discoverable device. This, however, prevents me to register the PCI
device as a thermal sensor (dev.of_node is required by thermal).

As far as we consider a fixed PCI topology eg. a SoC internal design I
could put something like this in DT (used by ath11k/ath10k btw).

pci@... {
...
pci-bridge@... {
...
wifi:wifi@0 {
reg = <0x0 0 0 0 0>;
#thermal-sensor-cells = <0>;
};
};
};

but in case we consider an arbitrary location of the device in PCI
topology that DT modification will not work and still I have no device
node.

Is there any preferred solution in the Linux kernel for this kind of use-case?

All the ideas appreciated.

Thanks,
/Waldek