[PATCH] tlv: Add tlv_bind_serial mapping
Jonas Rebmann
jre at pengutronix.de
Fri Nov 14 02:24:37 PST 2025
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 |
More information about the barebox
mailing list