RE: [PATCH v4 3/3] spi: dw: Add support for master mode selection for DWC SSI controller

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




> -----Original Message-----
> From: Serge Semin <fancer.lancer@xxxxxxxxx>
> Sent: Thursday, April 28, 2022 8:06 PM
> To: Srikandan, Nandhini <nandhini.srikandan@xxxxxxxxx>
> Cc: Serge Semin <Sergey.Semin@xxxxxxxxxxxxxxxxxxxx>; broonie@xxxxxxxxxx;
> robh+dt@xxxxxxxxxx; linux-spi@xxxxxxxxxxxxxxx; linux-
> kernel@xxxxxxxxxxxxxxx; devicetree@xxxxxxxxxxxxxxx;
> mgross@xxxxxxxxxxxxxxx; Pan, Kris <kris.pan@xxxxxxxxx>; Demakkanavar,
> Kenchappa <kenchappa.demakkanavar@xxxxxxxxx>; Zhou, Furong
> <furong.zhou@xxxxxxxxx>; Sangannavar, Mallikarjunappa
> <mallikarjunappa.sangannavar@xxxxxxxxx>; Vaidya, Mahesh R
> <mahesh.r.vaidya@xxxxxxxxx>; A, Rashmi <rashmi.a@xxxxxxxxx>
> Subject: Re: [PATCH v4 3/3] spi: dw: Add support for master mode selection
> for DWC SSI controller
> 
> On Wed, Apr 27, 2022 at 09:51:47AM +0000, Srikandan, Nandhini wrote:
> >
> >
> > > -----Original Message-----
> > > From: Serge Semin <fancer.lancer@xxxxxxxxx>
> > > Sent: Wednesday, April 13, 2022 6:33 PM
> > > To: Srikandan, Nandhini <nandhini.srikandan@xxxxxxxxx>
> > > Cc: Serge Semin <Sergey.Semin@xxxxxxxxxxxxxxxxxxxx>;
> > > broonie@xxxxxxxxxx;
> > > robh+dt@xxxxxxxxxx; linux-spi@xxxxxxxxxxxxxxx; linux-
> > > kernel@xxxxxxxxxxxxxxx; devicetree@xxxxxxxxxxxxxxx;
> > > mgross@xxxxxxxxxxxxxxx; Pan, Kris <kris.pan@xxxxxxxxx>;
> > > Demakkanavar, Kenchappa <kenchappa.demakkanavar@xxxxxxxxx>;
> Zhou,
> > > Furong <furong.zhou@xxxxxxxxx>; Sangannavar, Mallikarjunappa
> > > <mallikarjunappa.sangannavar@xxxxxxxxx>; Vaidya, Mahesh R
> > > <mahesh.r.vaidya@xxxxxxxxx>; A, Rashmi <rashmi.a@xxxxxxxxx>
> > > Subject: Re: [PATCH v4 3/3] spi: dw: Add support for master mode
> > > selection for DWC SSI controller
> > >
> > > Hello Nandhini
> > >
> > > AFAICS this patch should go before
> > > [PATCH v4 2/3] spi: dw: Add support for Intel Thunder Bay SPI
> > > controller Thus you'd perform the DWC AHB SSI Master mode conversion
> > > first, then introduce the new controller support. Otherwise without
> > > this patch applied the DW SPI driver is most likely left broken for
> > > the Intel SPI controllers since you drop the DW_SPI_CAP_KEEMBAY_MST
> > > macro usage in [PATCH 2/3] while the new DW AHB SSI Master
> > > functionality is introduced in the next patch [PATCH 3/3]. So please
> > > convert the series to the harmless configuration on each git image state.
> > >
> > Sure, I will reorder patch 2/3 and 3/3 so that the master mode conversion
> happens first followed by new controller support.
> >
> > > On Tue, Mar 08, 2022 at 06:33:31PM +0800,
> > > nandhini.srikandan@xxxxxxxxx
> > > wrote:
> > > > From: Nandhini Srikandan <nandhini.srikandan@xxxxxxxxx>
> > > >
> > > > Add support to select the controller mode as master mode by
> > > > setting Bit 31 of CTRLR0 register. This feature is supported for
> > > > controller versions above v1.02.
> > > >
> > > > Signed-off-by: Nandhini Srikandan <nandhini.srikandan@xxxxxxxxx>
> > > > ---
> > > >  drivers/spi/spi-dw-core.c | 4 ++--
> > > >  drivers/spi/spi-dw.h      | 7 +++----
> > > >  2 files changed, 5 insertions(+), 6 deletions(-)
> > > >
> > > > diff --git a/drivers/spi/spi-dw-core.c b/drivers/spi/spi-dw-core.c
> > > > index ecea471ff42c..68bfdf2c4dc7 100644
> > > > --- a/drivers/spi/spi-dw-core.c
> > > > +++ b/drivers/spi/spi-dw-core.c
> > > > @@ -307,8 +307,8 @@ static u32 dw_spi_prepare_cr0(struct dw_spi
> > > > *dws,
> > > struct spi_device *spi)
> > > >  		if (spi->mode & SPI_LOOP)
> > > >  			cr0 |= DW_HSSI_CTRLR0_SRL;
> > > >
> > >
> > > > -		if (dws->caps & DW_SPI_CAP_KEEMBAY_MST)
> > > > -			cr0 |= DW_HSSI_CTRLR0_KEEMBAY_MST;
> > > > +		/* CTRLR0[31] MST */
> > > > +		cr0 |= DW_HSSI_CTRLR0_MST;
> > >
> > > Could you please conditionally set that flag here? That's what we
> > > agreed to do in v3:
> > > https://lore.kernel.org/linux-
> > > spi/20211116191542.vc42cxvflzn66ien@mobilestation/
> > > like this:
> > > +	/* CTRLR0[31] MST */
> > > +	if (dw_spi_ver_is_ge(dws, HSSI, 102A))
> > > +		cr0 |= DWC_HSSI_CTRLR0_MST;
> > >
> 
> > In case of Keem Bay, though the version of SPI controller is shown as 1.01a
> from the HW register, it still needs the MST BIT31 to be set in order for
> controller to work in master mode.
> > Also since the older versions of the controller which do not need the BIT31
> to be set, the bit was reserved. Hence there is no impact by setting this BIT31
> for older versions.
> > So, the condition check was removed.
> 
> I am completely confused. Earlier you said that both Keem Bay and Thunder
> bay had v1.02a DW AHB SSI IP-core:
> https://patchwork.kernel.org/project/spi-devel-
> general/patch/20210824085856.12714-3-nandhini.srikandan@xxxxxxxxx/
> Now you say they are based on the different versions of the core.
> Please clarify.
> 
> -Sergey
> 
HW IP team informed us that the version used by Keem Bay SPI controller is 1.02a. But in the IP version register it is updated as 1.01a. We are checking with the HW IP team regarding this mismatch and this will be taken care of internally. Apologies for the confusions. I will add the conditional check as per your suggestion.
> >
> > > >  	}
> > > >
> > > >  	return cr0;
> > > > diff --git a/drivers/spi/spi-dw.h b/drivers/spi/spi-dw.h index
> > > > d5ee5130601e..2583b7314c41 100644
> > > > --- a/drivers/spi/spi-dw.h
> > > > +++ b/drivers/spi/spi-dw.h
> > > > @@ -23,7 +23,7 @@
> > > >  	((_dws)->ip == DW_ ## _ip ## _ID)
> > > >
> > >
> > > >  #define __dw_spi_ver_cmp(_dws, _ip, _ver, _op) \
> > > > -	(dw_spi_ip_is(_dws, _ip) && (_dws)->ver _op DW_ ## _ip ## _ver)
> > > > +	(dw_spi_ip_is(_dws, _ip) && (_dws)->ver _op DW_ ## _ip ## _ ##
> > > _ver)
> > >
> > > Nice catch. My mistake. Could you please move this change into a
> > > dedicated patch with the next fixes tag?
> > > Fixes: 2cc8d9227bbb ("spi: dw: Introduce Synopsys IP-core versions
> > > interface")
> > >
> 
> > Sure, I will convert this to a dedicated patch. Just for confirmation, the
> patch should be a separate patch with this title "Fixes: 2cc8d9227bbb ("spi:
> dw: Introduce Synopsys IP-core versions interface")"
> > and not part of the current patch set series.
> 
> You can add that patch to this series (better to the head of it). The title can
> be something like: "spi: dw: Fix IP-core versions macro".
> The tag needs to be added in the commit log above the Signed-off-by tag.
> 
Sure, I will add the patch to the head of this series and add the tag.
> -Sergey
> 
> > > >
> > > >  #define dw_spi_ver_is(_dws, _ip, _ver) __dw_spi_ver_cmp(_dws,
> > > > _ip, _ver, ==)
> > > >
> > > > @@ -31,8 +31,7 @@
> > > >
> > > >  /* DW SPI controller capabilities */
> > > >  #define DW_SPI_CAP_CS_OVERRIDE		BIT(0)
> > > > -#define DW_SPI_CAP_KEEMBAY_MST		BIT(1)
> > > > -#define DW_SPI_CAP_DFS32		BIT(2)
> > > > +#define DW_SPI_CAP_DFS32		BIT(1)
> > > >
> > > >  /* Register offsets (Generic for both DWC APB SSI and DWC SSI IP-
> cores) */
> > > >  #define DW_SPI_CTRLR0			0x00
> > > > @@ -100,7 +99,7 @@
> > >
> > > >   * 0: SSI is slave
> > > >   * 1: SSI is master
> > > >   */
> > > > -#define DW_HSSI_CTRLR0_KEEMBAY_MST		BIT(31)
> > > > +#define DW_HSSI_CTRLR0_MST			BIT(31)
> > >
> > > Could you please drop the redundant comment above and join the macro
> > > with the DW_HSSI_* macros group?
> > >
> > Sure, I will remove the comment and group the macros.
> > > -Sergey
> > >
> > > >
> > > >  /* Bit fields in CTRLR1 */
> > > >  #define DW_SPI_NDF_MASK				GENMASK(15,
> 0)
> > > > --
> > > > 2.17.1
> > > >




[Index of Archives]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux