linux-usb.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
To: Johan Hovold <johan@kernel.org>
Cc: Manivannan Sadhasivam <mani@kernel.org>,
	gregkh@linuxfoundation.org, linux-usb@vger.kernel.org,
	linux-kernel@vger.kernel.org, patong.mxl@gmail.com,
	linus.walleij@linaro.org, angelo.dureghello@timesys.com
Subject: Re: [PATCH v5 1/3] usb: serial: Add MaxLinear/Exar USB to Serial driver
Date: Wed, 24 Feb 2021 09:51:33 +0100	[thread overview]
Message-ID: <20210224095133.3b1533fc@coco.lan> (raw)
In-Reply-To: <YDPSGE5vLphfFNJn@hovoldconsulting.com>

Em Mon, 22 Feb 2021 16:47:36 +0100
Johan Hovold <johan@kernel.org> escreveu:

> On Mon, Feb 22, 2021 at 04:27:34PM +0100, Mauro Carvalho Chehab wrote:
> > Hi Johan,
> > 
> > Em Tue, 26 Jan 2021 17:26:36 +0100
> > Johan Hovold <johan@kernel.org> escreveu:
> >   
> > > On Tue, Jan 26, 2021 at 09:16:04PM +0530, Manivannan Sadhasivam wrote:  
> > > > On Thu, Jan 21, 2021 at 11:19:24AM +0100, Johan Hovold wrote:    
> > > > > On Sun, Nov 22, 2020 at 10:38:20PM +0530, Manivannan Sadhasivam wrote:    
> > > > > > Add support for MaxLinear/Exar USB to Serial converters. This driver
> > > > > > only supports XR21V141X series but it can be extended to other series
> > > > > > from Exar as well in future.    
> 
> > I'm now facing an issue with this driver. I have here two different
> > boards with those USB UART from MaxLinear/Exar.
> > 
> > The first one is identical to Mani's one:
> > 	USB_DEVICE(0x04e2, 0x1411)
> > The second one is a different version of it:
> > 	USB_DEVICE(0x04e2, 0x1424)
> > 
> > By looking at the final driver merged at linux-next, it sounds that
> > somewhere during the review of this series, it lost the priv struct,
> > and the xr_probe function. It also lost support for all MaxLinear/Exar
> > devices, except for just one model (04e2:1411).
> > 
> > The original submission:
> > 
> > 	https://lore.kernel.org/linux-usb/20180404070634.nhspvmxcjwfgjkcv@advantechmxl-desktop
> > 
> > And the manufacturer's Linux driver on their website:
> > 
> > 	https://www.maxlinear.com/support/design-tools/software-drivers
> > 
> > Had support for other 12 different models of the MaxLinear/Exar USB
> > UART.   
> 
> IIRC Manivannan only had access to one of these models and his original
> submission (based on the patch you link to above) didn't include support
> for the others. And keeping the type abstraction didn't make sense for
> just one model.
> 
> > Those are grouped into 5 different major types:
> > 
> > 	+	init_xr2280x_reg_map();
> > 	+	init_xr21b142x_reg_map();
> > 	+	init_xr21b1411_reg_map();
> > 	+	init_xr21v141x_reg_map();
> > 	+
> > 	+	if ((xrusb->DeviceProduct & 0xfff0) == 0x1400)
> > 	+		memcpy(&(xrusb->reg_map), &xr2280x_reg_map,
> > 	+			sizeof(struct reg_addr_map));
> > 	+	else if ((xrusb->DeviceProduct & 0xFFF0) == 0x1420)
> > 	+		memcpy(&(xrusb->reg_map), &xr21b142x_reg_map,
> > 	+			sizeof(struct reg_addr_map));
> > 	+	else if (xrusb->DeviceProduct == 0x1411)
> > 	+		memcpy(&(xrusb->reg_map), &xr21b1411_reg_map,
> > 	+			sizeof(struct reg_addr_map));
> > 	+	else if ((xrusb->DeviceProduct & 0xfff0) == 0x1410)
> > 	+		memcpy(&(xrusb->reg_map), &xr21v141x_reg_map,
> > 	+			sizeof(struct reg_addr_map));
> > 	+	else
> > 	+		rv = -1;
> > 
> > Note: Please don't be confused by "reg_map" name. This has nothing
> >       to do with Linux regmap API ;-)
> > 
> > What happens is that different USB IDs have different values for
> > each register. So, for instance, the UART enable register is set to
> > either one of the following values, depending on the value of
> > udev->descriptor.idProduct:
> > 
> > 	xr21b140x_reg_map.uart_enable_addr = 0x00;
> > 	xr21b1411_reg_map.uart_enable_addr = 0xc00;
> > 	xr21v141x_reg_map.uart_enable_addr = 0x03;
> > 	xr21b142x_reg_map.uart_enable_addr = 0x00;
> > 
> > There are other values that depend on the probing time detection,
> > based on other USB descriptors. Those set several fields at the
> > priv data that would allow to properly map the registers.
> > 
> > Also, there are 4 models that support multiple channels. On those,
> > there are one pair of register get/set for each channel.
> > 
> > -
> > 
> > In summary, while supporting just 04e2:1411 there's no need for
> > a private struct, in order to properly support the other models,
> > some autodetection is needed. The best way of doing that is to
> > re-add the .probe method and adding a priv struct.
> > 
> > As I dunno why this was dropped in the first place, I'm wondering
> > if it would be ok to re-introduce them.  
> 
> Sure. It was just not needed if we were only going to support one model.
> 
> > To be clear: my main focus here is just to avoid needing to use 
> > Windows in order to use the serial console of the hardware with
> > the 0x1424 variant ;-)
> > 
> > I can't test the driver with the other hardware, but, IMHO, instead
> > of adding a hack to support 0x1424, the better (but more painful)
> > would be to re-add the auto-detection part and support for the
> > other models.  
> 
> Sounds good to me. 

Great! I'll work on a patch and submit when done.

Thanks!
Mauro

  reply	other threads:[~2021-02-24  8:53 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-11-22 17:08 [PATCH v5 0/3] Add support for MaxLinear/Exar USB to serial converters Manivannan Sadhasivam
2020-11-22 17:08 ` [PATCH v5 1/3] usb: serial: Add MaxLinear/Exar USB to Serial driver Manivannan Sadhasivam
2021-01-21 10:19   ` Johan Hovold
2021-01-26 15:46     ` Manivannan Sadhasivam
2021-01-26 16:26       ` Johan Hovold
2021-02-22 15:27         ` Mauro Carvalho Chehab
2021-02-22 15:47           ` Johan Hovold
2021-02-24  8:51             ` Mauro Carvalho Chehab [this message]
2021-02-25 17:58             ` Mauro Carvalho Chehab
2021-02-25 18:04               ` Mauro Carvalho Chehab
2021-02-26 10:07                 ` Johan Hovold
2021-02-26 10:37                   ` Mauro Carvalho Chehab
2020-11-22 17:08 ` [PATCH v5 2/3] usb: serial: xr_serial: Add gpiochip support Manivannan Sadhasivam
2020-12-01 14:37   ` Linus Walleij
2020-12-01 15:51     ` Johan Hovold
2020-12-05 22:21       ` Linus Walleij
2020-12-08  9:58         ` Johan Hovold
2020-12-08 12:41           ` Linus Walleij
2020-12-08 12:52             ` Manivannan Sadhasivam
2020-12-09 15:31               ` Johan Hovold
2020-12-09 15:25             ` Johan Hovold
2020-12-09 16:25               ` Linus Walleij
2020-12-10  8:53                 ` Johan Hovold
2020-12-10  9:04                   ` Johan Hovold
2020-12-12  0:03                   ` Linus Walleij
2020-12-14  8:58                     ` Johan Hovold
2020-12-14  9:19                       ` Linus Walleij
2020-12-14  9:31                         ` Johan Hovold
2020-12-01 18:00     ` Manivannan Sadhasivam
2021-01-21 11:06   ` Johan Hovold
2020-11-22 17:08 ` [PATCH v5 3/3] usb: cdc-acm: Ignore Exar XR21V141X when serial driver is built Manivannan Sadhasivam
2021-01-21 10:23   ` Johan Hovold
2020-12-08 10:51 ` [PATCH v5 0/3] Add support for MaxLinear/Exar USB to serial converters Manivannan Sadhasivam
2020-12-14  9:51   ` Johan Hovold

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=20210224095133.3b1533fc@coco.lan \
    --to=mchehab+huawei@kernel.org \
    --cc=angelo.dureghello@timesys.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=johan@kernel.org \
    --cc=linus.walleij@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=mani@kernel.org \
    --cc=patong.mxl@gmail.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).