diff mbox series

[2/4] dm: ofnode: add ofnode_device_is_compatible() helper

Message ID 1524019125-26287-3-git-send-email-yamada.masahiro@socionext.com
State Superseded
Headers show
Series Add Linux-compatible syscon_to_regmap API | expand

Commit Message

Masahiro Yamada April 18, 2018, 2:38 a.m. UTC
device_is_compatible() takes udevice, but there is no such a helper
that takes ofnode.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
---

 drivers/core/device.c |  8 +-------
 drivers/core/ofnode.c | 11 +++++++++++
 include/dm/ofnode.h   | 11 +++++++++++
 3 files changed, 23 insertions(+), 7 deletions(-)

Comments

Simon Glass April 22, 2018, 8:11 p.m. UTC | #1
Hi Masahiro,

On 17 April 2018 at 20:38, Masahiro Yamada <yamada.masahiro@socionext.com>
wrote:
> device_is_compatible() takes udevice, but there is no such a helper
> that takes ofnode.
>
> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
> ---
>
>  drivers/core/device.c |  8 +-------
>  drivers/core/ofnode.c | 11 +++++++++++
>  include/dm/ofnode.h   | 11 +++++++++++
>  3 files changed, 23 insertions(+), 7 deletions(-)

Please can you add a call to this to a test?

Regards,
Simon
Masahiro Yamada April 23, 2018, 4:50 a.m. UTC | #2
2018-04-23 5:11 GMT+09:00 Simon Glass <sjg@chromium.org>:
> Hi Masahiro,
>
> On 17 April 2018 at 20:38, Masahiro Yamada <yamada.masahiro@socionext.com>
> wrote:
>> device_is_compatible() takes udevice, but there is no such a helper
>> that takes ofnode.
>>
>> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
>> ---
>>
>>  drivers/core/device.c |  8 +-------
>>  drivers/core/ofnode.c | 11 +++++++++++
>>  include/dm/ofnode.h   | 11 +++++++++++
>>  3 files changed, 23 insertions(+), 7 deletions(-)
>
> Please can you add a call to this to a test?
>

No.

I do not see any ofnode helper test in test/dm/.

You are requesting additional work beyond this patch.
It is unfair.


This helper is tested indirectly by other tests.

Of course, you (and anybody) are free to add per-helper grained tests,
but this is not a good reason to block this patch.
Simon Glass April 25, 2018, 5:01 a.m. UTC | #3
Hi Masahiro,

On 22 April 2018 at 22:50, Masahiro Yamada <yamada.masahiro@socionext.com>
wrote:
> 2018-04-23 5:11 GMT+09:00 Simon Glass <sjg@chromium.org>:
>> Hi Masahiro,
>>
>> On 17 April 2018 at 20:38, Masahiro Yamada <yamada.masahiro@socionext.com
>
>> wrote:
>>> device_is_compatible() takes udevice, but there is no such a helper
>>> that takes ofnode.
>>>
>>> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
>>> ---
>>>
>>>  drivers/core/device.c |  8 +-------
>>>  drivers/core/ofnode.c | 11 +++++++++++
>>>  include/dm/ofnode.h   | 11 +++++++++++
>>>  3 files changed, 23 insertions(+), 7 deletions(-)
>>
>> Please can you add a call to this to a test?
>>
>
> No.
>
> I do not see any ofnode helper test in test/dm/.
>
> You are requesting additional work beyond this patch.
> It is unfair.
>
>
> This helper is tested indirectly by other tests.
>
> Of course, you (and anybody) are free to add per-helper grained tests,
> but this is not a good reason to block this patch.

I understand what you are saying, but you don't need to do any plumbing to
make this work. A simple call is enough, perhaps in test-fdt.c? If we get
enough tests we can refactor them into a separate ofnode test suite.

We should not add code without tests. I plan to go back and add tests for
specific calls, but don't want the work to become any harder for me.

Regards,
Simon
diff mbox series

Patch

diff --git a/drivers/core/device.c b/drivers/core/device.c
index 940a153..8d95787 100644
--- a/drivers/core/device.c
+++ b/drivers/core/device.c
@@ -709,13 +709,7 @@  int device_set_name(struct udevice *dev, const char *name)
 
 bool device_is_compatible(struct udevice *dev, const char *compat)
 {
-	const void *fdt = gd->fdt_blob;
-	ofnode node = dev_ofnode(dev);
-
-	if (ofnode_is_np(node))
-		return of_device_is_compatible(ofnode_to_np(node), compat, NULL, NULL);
-	else
-		return !fdt_node_check_compatible(fdt, ofnode_to_offset(node), compat);
+	return ofnode_device_is_compatible(dev_ofnode(dev), compat);
 }
 
 bool of_machine_is_compatible(const char *compat)
diff --git a/drivers/core/ofnode.c b/drivers/core/ofnode.c
index 5909a25..ee2109b 100644
--- a/drivers/core/ofnode.c
+++ b/drivers/core/ofnode.c
@@ -687,3 +687,14 @@  u64 ofnode_translate_address(ofnode node, const fdt32_t *in_addr)
 	else
 		return fdt_translate_address(gd->fdt_blob, ofnode_to_offset(node), in_addr);
 }
+
+int ofnode_device_is_compatible(ofnode node, const char *compat)
+{
+	if (ofnode_is_np(node))
+		return of_device_is_compatible(ofnode_to_np(node), compat,
+					       NULL, NULL);
+	else
+		return !fdt_node_check_compatible(gd->fdt_blob,
+						  ofnode_to_offset(node),
+						  compat);
+}
diff --git a/include/dm/ofnode.h b/include/dm/ofnode.h
index 0d00840..a2c6a50 100644
--- a/include/dm/ofnode.h
+++ b/include/dm/ofnode.h
@@ -681,4 +681,15 @@  int ofnode_read_resource_byname(ofnode node, const char *name,
  * @return the translated address; OF_BAD_ADDR on error
  */
 u64 ofnode_translate_address(ofnode node, const fdt32_t *in_addr);
+
+/**
+ * ofnode_device_is_compatible() - check if the node is compatible with compat
+ *
+ * This allows to check whether the node is comaptible with the compat.
+ *
+ * @node:	Device tree node for which compatible needs to be verified.
+ * @compat:	Compatible string which needs to verified in the given node.
+ * @return true if OK, false if the compatible is not found
+ */
+int ofnode_device_is_compatible(ofnode node, const char *compat);
 #endif