Hi Ahmad,

On 2025-11-13 10:11, Ahmad Fatoum wrote:
+       struct bus_type *bus;
+       struct device_d *socdev;
+       const char *soc_serial;
+       char *tlv_serial = basprintf("%.*s", len, val);

strndup would also work here.

Since a such basprintf is used in __tlv_format_str() and
tlv_format_blob(), I found it adequate to do it the same way.

+
+       bus = get_bus_by_name("soc");
+       if (!bus) {
+               pr_err("No 'soc' bus found\n");

goto out and use a common error message? That way you also cover the
case of no socdev existing.

Ah indeed, will do that in v2.

+               return -EACCES;
+       }
+
+       for_each_device(socdev) {
+               soc_serial = dev_get_param(socdev, "serial_number");
+               if (!soc_serial)
+                       continue;
+
+               if (streq_ptr(tlv_serial, soc_serial))
+                       return __tlv_format_str(dev, map, len, val) ? 0 : 
-ENOMEM;

        return tlv_format_str(...) directly instead?

I talked with Sascha yesterday and I believe he is implementing a common
get_soc_uid(). If so, that might be suitable for use here.

Sounds good! When I wrote this code, I was unsure whether multiple SoC
UIDs or a soc1.serial_number are cases we ever want to care about. If
not, I would habe only tested against the one/first serial_number here
and then break the loop...

Will update to get_soc_uid() if that's posted before v2.

Regards,
Jonas

--
Pengutronix e.K.                           | Jonas Rebmann               |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-9    |

Reply via email to