From: Johan Hovold <johan@kernel.org>
To: Crescent Hsieh <crescentcy.hsieh@moxa.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org,
FangpingFP.Cheng@moxa.com, Epson.Chiang@moxa.com
Subject: Re: [PATCH v2 1/4] USB: serial: mxuport: clean up firmware version handling
Date: Tue, 21 Jul 2026 16:34:06 +0200 [thread overview]
Message-ID: <al-DXpI52HuWBNwG@hovoldconsulting.com> (raw)
In-Reply-To: <20260623080138.166398-3-crescentcy.hsieh@moxa.com>
On Tue, Jun 23, 2026 at 04:01:36PM +0800, Crescent Hsieh wrote:
> Add a small helper for parsing firmware versions and use it for the
> bundled firmware image. This avoids open-coded firmware image offsets
> in probe() and validates the image size before reading the version
> bytes.
>
> Keep the existing version comparison policy unchanged, but store the
> version components explicitly so that the version can be printed
> without unpacking a raw integer.
>
> Print the firmware version fields in decimal, as these fields represent
> readable version components rather than hexadecimal values.
>
> Signed-off-by: Crescent Hsieh <crescentcy.hsieh@moxa.com>
> ---
Thanks for the v2. You seem to have addressed all my comments on v1 of
the series, which is unfortunately not as common as I wish it were. :)
> @@ -82,7 +95,6 @@
>
> #define RQ_VENDOR_RESET_DEVICE 0x23 /* Try to reset the device */
> #define RQ_VENDOR_QUERY_FW_CONFIG 0x24
> -
Nit: this is an unrelated change
I see you add another define here in the next patch, but perhaps you
should keep the newline separators before and after that one.
> #define RQ_VENDOR_GET_VERSION 0x81 /* Get firmware version */
> #define RQ_VENDOR_GET_PAGE 0x82 /* Read flash page */
> #define RQ_VENDOR_GET_ROM_PROC 0x83 /* Get ROM process state */
> @@ -970,8 +982,32 @@ static int mxuport_calc_num_ports(struct usb_serial *serial,
> return num_ports;
> }
>
> +static void mxuport_set_fw_version(struct mxuport_fw_version *version,
> + u8 major, u8 minor, u8 build)
The naming is a bit unfortunate as this is not an inverse of
mxuport_get_fw_version() but that should be ok.
> +{
> + version->major = major;
> + version->minor = minor;
> + version->build = build;
> + version->value = (major << 16) | (minor << 8) | build;
> +}
> +
> +static int mxuport_parse_fw_version(const struct firmware *fw,
> + const u16 *offsets,
> + struct mxuport_fw_version *version)
> +{
> + if (fw->size <= offsets[0] || fw->size <= offsets[1] ||
> + fw->size <= offsets[2])
> + return -EINVAL;
I just merged this sanity check:
https://lore.kernel.org/all/20260715084611.45995-1-pengpeng@iscas.ac.cn/
so you may want to rebase on my usb-linus branch if there is a v3,
otherwise I can fix it up.
https://git.kernel.org/pub/scm/linux/kernel/git/johan/usb-serial.git/log/?h=usb-linus
> +
> + mxuport_set_fw_version(version, fw->data[offsets[0]],
> + fw->data[offsets[1]], fw->data[offsets[2]]);
> +
> + return 0;
> +}
> +
> /* Get the version of the firmware currently running. */
> -static int mxuport_get_fw_version(struct usb_serial *serial, u32 *version)
> +static int mxuport_get_fw_version(struct usb_serial *serial,
> + struct mxuport_fw_version *version)
> {
> u8 *ver_buf;
> int err;
> @@ -988,7 +1024,7 @@ static int mxuport_get_fw_version(struct usb_serial *serial, u32 *version)
> goto out;
> }
>
> - *version = (ver_buf[0] << 16) | (ver_buf[1] << 8) | ver_buf[2];
> + mxuport_set_fw_version(version, ver_buf[0], ver_buf[1], ver_buf[2]);
> err = 0;
> out:
> kfree(ver_buf);
> @@ -1049,8 +1085,7 @@ static int mxuport_probe(struct usb_serial *serial,
> {
> u16 productid = le16_to_cpu(serial->dev->descriptor.idProduct);
> const struct firmware *fw_p = NULL;
> - u32 version;
> - int local_ver;
> + struct mxuport_fw_version version, local_ver;
Nit: I'd move this line above fw_p to maintain reverse xmas style of the
declarations.
> char buf[32];
> int err;
Johan
next prev parent reply other threads:[~2026-07-21 14:34 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-23 8:01 [PATCH v2 0/4] USB: serial: mxuport: add MUX50U support and updates Crescent Hsieh
2026-06-23 8:01 ` [PATCH v2 1/4] USB: serial: mxuport: clean up firmware version handling Crescent Hsieh
2026-07-21 14:34 ` Johan Hovold [this message]
2026-06-23 8:01 ` [PATCH v2 2/4] USB: serial: mxuport: add MUX50U-based device support Crescent Hsieh
2026-07-21 14:59 ` Johan Hovold
2026-06-23 8:01 ` [PATCH v2 3/4] USB: serial: mxuport: handle SEND_NEXT transmit flow control Crescent Hsieh
2026-07-21 15:51 ` Johan Hovold
2026-06-23 8:01 ` [PATCH v2 4/4] USB: serial: mxuport: support RS485 mode configuration Crescent Hsieh
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=al-DXpI52HuWBNwG@hovoldconsulting.com \
--to=johan@kernel.org \
--cc=Epson.Chiang@moxa.com \
--cc=FangpingFP.Cheng@moxa.com \
--cc=crescentcy.hsieh@moxa.com \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.