Re: [PATCH] thermal: of: look for sensor driver parent node if device node missing

From: Laxman Dewangan
Date: Wed Jul 30 2014 - 09:40:39 EST


On Wednesday 30 July 2014 06:48 PM, Eduardo Valentin wrote:
Laxman,

On Mon, Jul 14, 2014 at 02:04:55PM +0200, Lucas Stach wrote:
Am Montag, den 14.07.2014, 16:42 +0530 schrieb Laxman Dewangan:
There are some mfd devices which supports junction thermal interrupt
like ams,AS3722. The DT binding of these devices are defined as the
flat and drivers for sub module of such devices are registered as
the mfd_add_devices. In this method, the sub devices registered as
platform driver and these do not have the of_node pointer on their
device structure. In this case, use the parent of_node pointer to
get the required of_node pointer.

Signed-off-by: Laxman Dewangan <ldewangan@xxxxxxxxxx>
---
drivers/thermal/of-thermal.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/drivers/thermal/of-thermal.c b/drivers/thermal/of-thermal.c
index 04b1be7..85a7d71 100644
--- a/drivers/thermal/of-thermal.c
+++ b/drivers/thermal/of-thermal.c
@@ -396,6 +396,8 @@ thermal_zone_of_sensor_register(struct device *dev, int sensor_id,
return ERR_PTR(-EINVAL);
sensor_np = dev->of_node;
+ if (!sensor_np && dev->parent)
+ sensor_np = dev->parent->of_node;
for_each_child_of_node(np, child) {
struct of_phandle_args sensor_specs;
This seems like the wrong way around. If the MFD has subdev information
stored in the parent node it should be the MFD drivers responsibility to
populate the subdev of_node with its own node. The subdev should not be
forced to make such possible unsafe assumptions.

This is my understanding too. MFD device drivers must populate the
required data onto their sub devices while creating them.


Sometime ago, Stephen sent patch on MFD to initialize the mfd sub devices of_node with parent node.

mfd: always assign of_node in mfd_add_device()
http://lists.infradead.org/pipermail/linux-arm-kernel/2013-December/217482.html

But it has unforeseen issue and reverted with patch
mfd: Revert "mfd: Always assign of_node in mfd_add_device()"
https://groups.google.com/forum/#!msg/rtc-linux/2LeLipSPFs0/XfPCKpT1BnUJ

So we do not have any mechanism here to pass the parent of_node to the of-thermal.

Adding Stephen and Lee for more comment.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/