linux-serial.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
To: Parker Newman <parker@finest.io>
Cc: Parker Newman <pnewman@connecttech.com>,
	linux-kernel@vger.kernel.org, linux-serial@vger.kernel.org,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Jiri Slaby <jirislaby@kernel.org>
Subject: Re: [PATCH v2 00/13] serial: 8250_exar: Clean up the driver
Date: Wed, 11 Sep 2024 23:51:09 +0300	[thread overview]
Message-ID: <ZuICvRjM4TqozL_X@smile.fi.intel.com> (raw)
In-Reply-To: <20240911133848.2cbb1834@SWDEV2.connecttech.local>

On Wed, Sep 11, 2024 at 01:38:48PM -0400, Parker Newman wrote:
> On Mon, 9 Sep 2024 13:06:26 +0300
> Andy Shevchenko <andriy.shevchenko@linux.intel.com> wrote:
> > On Fri, Sep 06, 2024 at 02:38:51PM -0400, Parker Newman wrote:
> > > On Fri, 6 Sep 2024 17:42:26 +0300
> > > Andy Shevchenko <andriy.shevchenko@linux.intel.com> wrote:
> > > > On Fri, Sep 06, 2024 at 10:33:54AM -0400, Parker Newman wrote:
> > > > > On Fri, 6 Sep 2024 17:24:44 +0300
> > > > > Andy Shevchenko <andriy.shevchenko@linux.intel.com> wrote:
> > > > > > On Fri, Sep 06, 2024 at 09:51:41AM -0400, Parker Newman wrote:
> > > > > > > On Fri, 6 Sep 2024 15:46:51 +0300
> > > > > > > Andy Shevchenko <andriy.shevchenko@linux.intel.com> wrote:
> > > > > > > > On Fri, May 03, 2024 at 02:33:03PM -0400, Parker Newman wrote:

...

> > > > > > > > Sorry for blast from the past, but I have some instersting information
> > > > > > > > for you. We now have spi-gpio and 93c46 eeprom drivers available to be
> > > > > > > > used from others via software nodes, can you consider updating your code
> > > > > > > > to replace custom bitbanging along with r/w ops by the instantiating the
> > > > > > > > respective drivers?
> > > > > > >
> > > > > > > Hi Andy,
> > > > > > > The Exar UARTs don't actually use MPIO/GPIO for the EEPROM.
> > > > > > > They have a dedicated "EEPROM interface" which is accessed by the
> > > > > > > REGB (0x8E) register. It is a very simple bit-bang interface though,
> > > > > > > one bit per signal.
> > > > > > >
> > > > > > > I guess in theory I could either add  GPIO wrapper to toggle these bits
> > > > > > > and use the spi-gpio driver but I am not sure if that really improves things?
> > > > > > > Maybe using the spi-bitbang driver directly is more appropriate?
> > > > > > > What do you think?
> > > > > >
> > > > > > Yes, spi-bitbang seems better in this case.
> > > > >
> > > > > I will try to make some time to implement this... Or if someone else from the
> > > > > community wants to take this on in the mean time I am certainly happy to test
> > > > > and help out!
> > > >
> > > > Sure, I shared this thought due to having lack of time to look myself,
> > > > but I prepared the above mentioned drivers to make them work in this case.
> > > > (If you are curios, see the Git history for the last few releases with
> > > >  --author="Andy Shevchenko")
> > > >
> > >
> > > Looking into it a bit more I think we could just use the eeprom_93cx6
> > > driver without any SPI layer. Just need to add simple register_read()
> > > and register_write() functions to read/write the REB register.
> > >
> > > That should be a pretty easy change to make, I can try to make that
> > > change soon unless anyone has any objections to that method?
> >
> > Thank you, this is pretty wonderful news!
> >
> 
> I have this mostly working however there is one issue. The eeprom_93cx6
> driver doesn't seem to discard the "dummy bit" the 93C46 EEPROM outputs
> between the writing of the op-code/address to the EEPROM and the reading
> of the data from the EEPROM.
> 
> More info can be found on page 6 of the AT93C46 datasheet. I see similar
> notes in other 93C46/93C56/93C66 datasheets.
> Link: https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-5193-SEEPROM-AT93C46D-Datasheet.pdf
> 
> In summary the read operation for the AT93C46 EEPROM is:
> Write to EEPROM :	110[A5-A0]	(9 bits)
> Read from EEPROM: 	0[D15-D0]	(17 bits)
> 
> Where 110 is the READ OpCode, [A5-A0] is the address to read from,
> 0 is a "dummy bit" and then [D15-D0] is the actual data.
> 
> I am seeing the "correct" values being read from the EEPROM when using the
> eeprom_93cx6 driver but they are all shifted right by one because the
> dummy 0 bit is not being discarded.
> 
> The confusing part is the eeprom_93cx6 driver has behaved the same since
> at least 2009 and half a dozen or so other drivers use it. I am not sure
> if they just work around and/or live with this bug or if they have
> different HW that handles the extra dummy bit?

I briefly looked at a few users and it seems to me:
1) either the Atmel chip has different HW protocol;
2) or all of them handle that in HW transparently to SW.

> I am hesitant to "fix" the eeprom_93cx6 driver and potentially break the
> other users of it. I could add a flag to the eeprom_93cx6 struct to work
> around this issue... Unless anyone else has some ideas or input?

In my opinion the 93c46 needs an additional configuration setting (in the
respective data structure) and some code to implement what you need here.

But yes, let's wait a bit for other opinions...

-- 
With Best Regards,
Andy Shevchenko



  reply	other threads:[~2024-09-11 20:51 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-05-03 17:15 [PATCH v2 00/13] serial: 8250_exar: Clean up the driver Andy Shevchenko
2024-05-03 17:15 ` [PATCH v2 01/13] serial: 8250_exar: Don't return positive values as error codes Andy Shevchenko
2024-05-03 17:15 ` [PATCH v2 02/13] serial: 8250_exar: Describe all parameters in kernel doc Andy Shevchenko
2024-05-03 17:15 ` [PATCH v2 03/13] serial: 8250_exar: Kill CTI_PCI_DEVICE() Andy Shevchenko
2024-05-03 17:15 ` [PATCH v2 04/13] serial: 8250_exar: Use PCI_SUBVENDOR_ID_IBM for subvendor ID Andy Shevchenko
2024-05-03 17:15 ` [PATCH v2 05/13] serial: 8250_exar: Trivia typo fixes Andy Shevchenko
2024-05-03 17:15 ` [PATCH v2 06/13] serial: 8250_exar: Extract cti_board_init_osc_freq() helper Andy Shevchenko
2024-05-03 17:15 ` [PATCH v2 07/13] serial: 8250_exar: Kill unneeded ->board_init() Andy Shevchenko
2024-05-03 17:16 ` [PATCH v2 08/13] serial: 8250_exar: Decrease indentation level Andy Shevchenko
2024-05-03 17:16 ` [PATCH v2 09/13] serial: 8250_exar: Return directly from switch-cases Andy Shevchenko
2024-05-03 17:16 ` [PATCH v2 10/13] serial: 8250_exar: Switch to use dev_err_probe() Andy Shevchenko
2024-05-03 17:16 ` [PATCH v2 11/13] serial: 8250_exar: Use BIT() in exar_ee_read() Andy Shevchenko
2024-05-03 17:16 ` [PATCH v2 12/13] serial: 8250_exar: Make type of bit the same in exar_ee_*_bit() Andy Shevchenko
2024-05-03 17:16 ` [PATCH v2 13/13] serial: 8250_exar: Keep the includes sorted Andy Shevchenko
2024-05-03 18:33 ` [PATCH v2 00/13] serial: 8250_exar: Clean up the driver Parker Newman
2024-09-06 12:46   ` Andy Shevchenko
2024-09-06 13:51     ` Parker Newman
2024-09-06 14:24       ` Andy Shevchenko
2024-09-06 14:33         ` Parker Newman
2024-09-06 14:42           ` Andy Shevchenko
2024-09-06 18:38             ` Parker Newman
2024-09-09 10:06               ` Andy Shevchenko
2024-09-11 17:38                 ` Parker Newman
2024-09-11 20:51                   ` Andy Shevchenko [this message]
2024-09-12 12:41                     ` Parker Newman
2024-09-13  9:37                       ` Andy Shevchenko

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=ZuICvRjM4TqozL_X@smile.fi.intel.com \
    --to=andriy.shevchenko@linux.intel.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=jirislaby@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-serial@vger.kernel.org \
    --cc=parker@finest.io \
    --cc=pnewman@connecttech.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).