Re: [U-Boot] [PATCH v2 1/2] spi: zynqmp_qspi: Add support for ZynqMP qspi driver

2018-05-07 Thread Jagan Teki
On Wed, May 2, 2018 at 2:49 PM, Siva Durga Prasad Paladugu
 wrote:
> Hi,
>
>> -Original Message-
>> From: Jagan Teki [mailto:ja...@amarulasolutions.com]
>> Sent: Wednesday, April 25, 2018 10:47 AM
>> To: Siva Durga Prasad Paladugu 
>> Cc: U-Boot-Denx 
>> Subject: Re: [U-Boot] [PATCH v2 1/2] spi: zynqmp_qspi: Add support for
>> ZynqMP qspi driver

[snip]

>> >>
>> >> > +
>> >> > +   plat->regs = (struct zynqmp_qspi_regs *)(devfdt_get_addr(bus) +
>> >> > +
>> >> > ZYNQMP_GQSPI_REG_OFFSET);
>> >> > +   plat->dma_regs = (struct zynqmp_qspi_dma_regs *)
>> >> > + (devfdt_get_addr(bus) +
>> >> > + ZYNQMP_GQSPI_DMA_REG_OFFSET);
>> >> > +
>> >> > +   ret = clk_get_by_index(bus, 0, &clk);
>> >> > +   if (ret < 0) {
>> >> > +   dev_err(dev, "failed to get clock\n");
>> >> > +   return ret;
>> >> > +   }
>> >> > +
>> >> > +   clock = clk_get_rate(&clk);
>> >> > +   if (IS_ERR_VALUE(clock)) {
>> >> > +   dev_err(dev, "failed to get rate\n");
>> >> > +   return clock;
>> >> > +   }
>> >> > +   debug("%s: CLK %ld\n", __func__, clock);
>> >> > +
>> >> > +   ret = clk_enable(&clk);
>> >> > +   if (ret && ret != -ENOSYS) {
>> >> > +   dev_err(dev, "failed to enable clock\n");
>> >> > +   return ret;
>> >> > +   }
>> >> > +
>> >> > +   value = dev_read_u32_default(bus, "spi-rx-bus-width", 1);
>> >> > +   switch (value) {
>> >> > +   case 1:
>> >> > +   break;
>> >> > +   case 2:
>> >> > +   mode |= SPI_RX_DUAL;
>> >> > +   break;
>> >> > +   case 4:
>> >> > +   mode |= SPI_RX_QUAD;
>> >> > +   break;
>> >> > +   default:
>> >> > +   printf("Invalid spi-rx-bus-width %d\n", value);
>> >> > +   break;
>> >> > +   }
>> >> > +
>> >> > +   value = dev_read_u32_default(bus, "spi-tx-bus-width", 1);
>> >> > +   switch (value) {
>> >> > +   case 1:
>> >> > +   break;
>> >> > +   case 2:
>> >> > +   mode |= SPI_TX_DUAL;
>> >> > +   break;
>> >> > +   case 4:
>> >> > +   mode |= SPI_TX_QUAD;
>> >> > +   break;
>> >> > +   default:
>> >> > +   printf("Invalid spi-tx-bus-width %d\n", value);
>> >> > +   break;
>> >> > +   }
>> >> > +
>> >> > +   plat->tx_rx_mode = mode;
>> >> > +
>> >> > +   plat->frequency = clock;
>> >> > +   plat->speed_hz = plat->frequency;
>> >>
>> >> why we need this? all these are generic stuff which is available at
>> >> spi- uclass.c
>> >
>> > Somehow I am not able to get these from spi-uclass.c , the routine which
>> reads all these info from dt in spi-uclass.c is never getting invoked in my
>> flow.
>> > I checked other driver as well,. Do you have an idea on why is it so?
>>
>> All these attributes are from platdata which were initialized by spi-uclass.c
>> so if you need any of these we can get the dm_spi_slave_platdata from
>> your driver using dev_get_parent_platdata() function.
>
> Looks like you didn’t get my point, in my flow the routine 
> spi_slave_ofdata_to_platdata() in spi-uclass.c is
> not getting invoked at all that’s why I am not getting this data from 
> spi-uclass.c. do you have an idea on
> what could be the issue that spi_slave_ofdata_to_platdata() is not getting 
> invoked.
> I will anyway debug it but, if you already encountered this and aware of any 
> reason for this , please let me know, that really helps me.

Fix the rest and keep this as it is we will discuss on next version.

Jagan.
___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


Re: [U-Boot] [PATCH v2 1/2] spi: zynqmp_qspi: Add support for ZynqMP qspi driver

2018-05-02 Thread Siva Durga Prasad Paladugu
Hi,

> -Original Message-
> From: Jagan Teki [mailto:ja...@amarulasolutions.com]
> Sent: Wednesday, April 25, 2018 10:47 AM
> To: Siva Durga Prasad Paladugu 
> Cc: U-Boot-Denx 
> Subject: Re: [U-Boot] [PATCH v2 1/2] spi: zynqmp_qspi: Add support for
> ZynqMP qspi driver
> 
> On Wed, Feb 7, 2018 at 3:40 PM, Siva Durga Prasad Paladugu
>  wrote:
> > Hi Jagan,
> >
> >
> >> -Original Message-
> >> From: Jagan Teki [mailto:ja...@amarulasolutions.com]
> >> Sent: Tuesday, January 23, 2018 10:41 PM
> >> To: Siva Durga Prasad Paladugu 
> >> Cc: U-Boot-Denx ; Siva Durga Prasad Paladugu
> >> 
> >> Subject: Re: [U-Boot] [PATCH v2 1/2] spi: zynqmp_qspi: Add support
> >> for ZynqMP qspi driver
> >>
> >> On Thu, Jan 4, 2018 at 1:07 PM, Siva Durga Prasad Paladugu
> >>  wrote:
> >> > This patch adds qspi driver support for ZynqMP SoC. This driver is
> >> > responsible for communicating with qspi flash devices.
> >> >
> >> > Signed-off-by: Siva Durga Prasad Paladugu 
> >> > ---
> >> > Changes from v1:
> >> > - Rebased on top of latest master
> >> > - Moved macro definitions to .h file as per comment
> >> > - Fixed magic values with macros as per comment
> >> > ---
> >> >  arch/arm/cpu/armv8/zynqmp/Kconfig  |   7 +
> >> >  arch/arm/include/asm/arch-zynqmp/zynqmp_qspi.h | 154 ++
> >> >  drivers/spi/Makefile   |   1 +
> >> >  drivers/spi/zynqmp_qspi.c  | 678
> >> +
> >>
> >> Was this gqspi like linux spi-zynqmp-gqspi.c or different?
> > Yes.
> 
> then try to use similar naming conventions in macros, or in function names
> as well.
> 
> >
> >>
> >> >  4 files changed, 840 insertions(+)  create mode 100644
> >> > arch/arm/include/asm/arch-
> >> zynqmp/zynqmp_qspi.h
> >> >  create mode 100644 drivers/spi/zynqmp_qspi.c
> >> >
> >> > diff --git a/arch/arm/cpu/armv8/zynqmp/Kconfig
> >> > b/arch/arm/cpu/armv8/zynqmp/Kconfig
> >> > index 3f922b4..2fe4f71 100644
> >> > --- a/arch/arm/cpu/armv8/zynqmp/Kconfig
> >> > +++ b/arch/arm/cpu/armv8/zynqmp/Kconfig
> >> > @@ -65,6 +65,13 @@ config PMUFW_INIT_FILE
> >> >   Include external PMUFW (Platform Management Unit FirmWare)
> to
> >> >   a Xilinx bootable image (boot.bin).
> >> >
> >> > +config ZYNQMP_QSPI
> >> > +   bool "Configure ZynqMP QSPI"
> >> > +   select DM_SPI
> >> > +   help
> >> > + This option is used to enable ZynqMP QSPI controller driver
> which
> >> > + is used to communicate with qspi flash devices.
> >>
> >> I've commented this before, what is the reason for adding spi kconfig
> >> entry in arch area instead of drivers/spi?
> >
> > I might have missed it, Will move to drivers/spi
> >>
> >> > +
> >> >  config ZYNQMP_USB
> >> > bool "Configure ZynqMP USB"
> >> >
> >> > diff --git a/arch/arm/include/asm/arch-zynqmp/zynqmp_qspi.h
> >> > b/arch/arm/include/asm/arch-zynqmp/zynqmp_qspi.h
> >> > new file mode 100644
> >> > index 000..5e2926e
> >> > --- /dev/null
> >> > +++ b/arch/arm/include/asm/arch-zynqmp/zynqmp_qspi.h
> >> > @@ -0,0 +1,154 @@
> >> > +/*
> >> > + * (C) Copyright 2014 - 2015 Xilinx
> >> > + *
> >> > + * Xilinx ZynqMP Quad-SPI(QSPI) controller driver (master mode
> >> > +only)
> >> > + *
> >> > + * SPDX-License-Identifier:GPL-2.0+
> >> > + */
> >> > +
> >> > +#ifndef _ASM_ARCH_ZYNQMP_QSPI_H_
> >> > +#define _ASM_ARCH_ZYNQMP_QSPI_H_
> >> > +
> >> > +#define ZYNQMP_QSPI_GFIFO_STRT_MODE_MASK   BIT(29)
> >> > +#define ZYNQMP_QSPI_CONFIG_MODE_EN_MASK(3 << 30)
> >> > +#define ZYNQMP_QSPI_CONFIG_DMA_MODE(2 << 30)
> >> > +#define ZYNQMP_QSPI_CONFIG_CPHA_MASK   BIT(2)
> >> > +#define ZYNQMP_QSPI_CONFIG_CPOL_MASK   BIT(1)
> >> > +
> >> > +/* QSPI MIO's count for different connection topologies */
> >> > +#define ZYNQMP_QSPI_MIO_NUM_QSPI0  6
> >> > +#define ZYNQMP_QSPI_MIO_NUM_QSPI1  5
>

Re: [U-Boot] [PATCH v2 1/2] spi: zynqmp_qspi: Add support for ZynqMP qspi driver

2018-04-24 Thread Jagan Teki
On Wed, Feb 7, 2018 at 3:40 PM, Siva Durga Prasad Paladugu
 wrote:
> Hi Jagan,
>
>
>> -Original Message-
>> From: Jagan Teki [mailto:ja...@amarulasolutions.com]
>> Sent: Tuesday, January 23, 2018 10:41 PM
>> To: Siva Durga Prasad Paladugu 
>> Cc: U-Boot-Denx ; Siva Durga Prasad Paladugu
>> 
>> Subject: Re: [U-Boot] [PATCH v2 1/2] spi: zynqmp_qspi: Add support for
>> ZynqMP qspi driver
>>
>> On Thu, Jan 4, 2018 at 1:07 PM, Siva Durga Prasad Paladugu
>>  wrote:
>> > This patch adds qspi driver support for ZynqMP SoC. This driver is
>> > responsible for communicating with qspi flash devices.
>> >
>> > Signed-off-by: Siva Durga Prasad Paladugu 
>> > ---
>> > Changes from v1:
>> > - Rebased on top of latest master
>> > - Moved macro definitions to .h file as per comment
>> > - Fixed magic values with macros as per comment
>> > ---
>> >  arch/arm/cpu/armv8/zynqmp/Kconfig  |   7 +
>> >  arch/arm/include/asm/arch-zynqmp/zynqmp_qspi.h | 154 ++
>> >  drivers/spi/Makefile   |   1 +
>> >  drivers/spi/zynqmp_qspi.c  | 678
>> +
>>
>> Was this gqspi like linux spi-zynqmp-gqspi.c or different?
> Yes.

then try to use similar naming conventions in macros, or in function
names as well.

>
>>
>> >  4 files changed, 840 insertions(+)
>> >  create mode 100644 arch/arm/include/asm/arch-
>> zynqmp/zynqmp_qspi.h
>> >  create mode 100644 drivers/spi/zynqmp_qspi.c
>> >
>> > diff --git a/arch/arm/cpu/armv8/zynqmp/Kconfig
>> > b/arch/arm/cpu/armv8/zynqmp/Kconfig
>> > index 3f922b4..2fe4f71 100644
>> > --- a/arch/arm/cpu/armv8/zynqmp/Kconfig
>> > +++ b/arch/arm/cpu/armv8/zynqmp/Kconfig
>> > @@ -65,6 +65,13 @@ config PMUFW_INIT_FILE
>> >   Include external PMUFW (Platform Management Unit FirmWare) to
>> >   a Xilinx bootable image (boot.bin).
>> >
>> > +config ZYNQMP_QSPI
>> > +   bool "Configure ZynqMP QSPI"
>> > +   select DM_SPI
>> > +   help
>> > + This option is used to enable ZynqMP QSPI controller driver which
>> > + is used to communicate with qspi flash devices.
>>
>> I've commented this before, what is the reason for adding spi kconfig entry
>> in arch area instead of drivers/spi?
>
> I might have missed it, Will move to drivers/spi
>>
>> > +
>> >  config ZYNQMP_USB
>> > bool "Configure ZynqMP USB"
>> >
>> > diff --git a/arch/arm/include/asm/arch-zynqmp/zynqmp_qspi.h
>> > b/arch/arm/include/asm/arch-zynqmp/zynqmp_qspi.h
>> > new file mode 100644
>> > index 000..5e2926e
>> > --- /dev/null
>> > +++ b/arch/arm/include/asm/arch-zynqmp/zynqmp_qspi.h
>> > @@ -0,0 +1,154 @@
>> > +/*
>> > + * (C) Copyright 2014 - 2015 Xilinx
>> > + *
>> > + * Xilinx ZynqMP Quad-SPI(QSPI) controller driver (master mode only)
>> > + *
>> > + * SPDX-License-Identifier:GPL-2.0+
>> > + */
>> > +
>> > +#ifndef _ASM_ARCH_ZYNQMP_QSPI_H_
>> > +#define _ASM_ARCH_ZYNQMP_QSPI_H_
>> > +
>> > +#define ZYNQMP_QSPI_GFIFO_STRT_MODE_MASK   BIT(29)
>> > +#define ZYNQMP_QSPI_CONFIG_MODE_EN_MASK(3 << 30)
>> > +#define ZYNQMP_QSPI_CONFIG_DMA_MODE(2 << 30)
>> > +#define ZYNQMP_QSPI_CONFIG_CPHA_MASK   BIT(2)
>> > +#define ZYNQMP_QSPI_CONFIG_CPOL_MASK   BIT(1)
>> > +
>> > +/* QSPI MIO's count for different connection topologies */
>> > +#define ZYNQMP_QSPI_MIO_NUM_QSPI0  6
>> > +#define ZYNQMP_QSPI_MIO_NUM_QSPI1  5
>> > +#define ZYNQMP_QSPI_MIO_NUM_QSPI1_CS   1
>> > +
>> > +/*
>> > + * QSPI Interrupt Registers bit Masks
>> > + *
>> > + * All the four interrupt registers (Status/Mask/Enable/Disable) have
>> > +the same
>> > + * bit definitions.
>> > + */
>> > +#define ZYNQMP_QSPI_IXR_TXNFULL_MASK   0x0004 /* QSPI TX
>> FIFO Overflow */
>> > +#define ZYNQMP_QSPI_IXR_TXFULL_MASK0x0008 /* QSPI TX
>> FIFO is full */
>> > +#define ZYNQMP_QSPI_IXR_RXNEMTY_MASK   0x0010 /* QSPI RX
>> FIFO Not Empty */
>> > +#define ZYNQMP_QSPI_IXR_GFEMTY_MASK0x0080 /* QSPI
>> Generic FIFO Empty */
>> > +#define ZYNQMP_QSPI_IXR_ALL_MASK
>> (ZYNQMP_QSPI_IXR_TXNFULL_MASK | \
>

Re: [U-Boot] [PATCH v2 1/2] spi: zynqmp_qspi: Add support for ZynqMP qspi driver

2018-04-12 Thread Liam Beguin
Hi Siva,

I wasn't able to find it on the Xilinx github. Is it in that tree already?

Thanks,
Liam

On Thu, 12 Apr 2018 at 07:18 Siva Durga Prasad Paladugu 
wrote:

> Hi Liam,
>
>
>
> We already have a patch for IO mode that we just verified internally. We
> got it for our tree from NGC guy John Moon. I will be sending that patch
> soon may be with v3 which I am planning to send once I got response from
> Jagan on my v2 queries.
>
>
>
> Regards,
>
> Siva
>
>
>
> *From:* Liam Beguin [mailto:liambeg...@gmail.com]
> *Sent:* Tuesday, April 10, 2018 8:56 PM
> *To:* Siva Durga Prasad Paladugu 
> *Cc:* Jagan Teki ; U-Boot-Denx <
> u-boot@lists.denx.de>; Michal Simek 
>
>
> *Subject:* Re: [U-Boot] [PATCH v2 1/2] spi: zynqmp_qspi: Add support for
> ZynqMP qspi driver
>
>
>
> Hi Siva,
>
>
>
> I've been working on a patch to add support for io-mode [1].
>
> It's based on xilinx/master which is closer to v1 (no include file).
>
> I haven't had much time to test it further but I can load a bitstream
>
> from a ubifs partition with it.
>
> Let me know if you have comments.
>
>
>
> On Tue, 10 Apr 2018 at 02:27 Siva Durga Prasad Paladugu <
> siva...@xilinx.com> wrote:
>
> H Jagan,
>
> Any further comments on this. I am waiting for your reply on some of my
> replies to your comment.
>
> Thanks,
> Siva
>
>
>
> Thanks,
>
> Liam
>
>
>
> [1] https://github.com/Liambeguin/u-boot/tree/io-mode
>
___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


Re: [U-Boot] [PATCH v2 1/2] spi: zynqmp_qspi: Add support for ZynqMP qspi driver

2018-04-12 Thread Siva Durga Prasad Paladugu
Hi Liam,

We already have a patch for IO mode that we just verified internally. We got it 
for our tree from NGC guy John Moon. I will be sending that patch soon may be 
with v3 which I am planning to send once I got response from Jagan on my v2 
queries.

Regards,
Siva

From: Liam Beguin [mailto:liambeg...@gmail.com]
Sent: Tuesday, April 10, 2018 8:56 PM
To: Siva Durga Prasad Paladugu 
Cc: Jagan Teki ; U-Boot-Denx 
; Michal Simek 
Subject: Re: [U-Boot] [PATCH v2 1/2] spi: zynqmp_qspi: Add support for ZynqMP 
qspi driver

Hi Siva,

I've been working on a patch to add support for io-mode [1].
It's based on xilinx/master which is closer to v1 (no include file).
I haven't had much time to test it further but I can load a bitstream
from a ubifs partition with it.
Let me know if you have comments.

On Tue, 10 Apr 2018 at 02:27 Siva Durga Prasad Paladugu 
mailto:siva...@xilinx.com>> wrote:
H Jagan,

Any further comments on this. I am waiting for your reply on some of my replies 
to your comment.

Thanks,
Siva

Thanks,
Liam

[1] https://github.com/Liambeguin/u-boot/tree/io-mode
___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


Re: [U-Boot] [PATCH v2 1/2] spi: zynqmp_qspi: Add support for ZynqMP qspi driver

2018-04-10 Thread Liam Beguin
Hi Siva,

I've been working on a patch to add support for io-mode [1].
It's based on xilinx/master which is closer to v1 (no include file).
I haven't had much time to test it further but I can load a bitstream
from a ubifs partition with it.
Let me know if you have comments.

On Tue, 10 Apr 2018 at 02:27 Siva Durga Prasad Paladugu 
wrote:

> H Jagan,
>
> Any further comments on this. I am waiting for your reply on some of my
> replies to your comment.
>
> Thanks,
> Siva
>
>
Thanks,
Liam

[1] https://github.com/Liambeguin/u-boot/tree/io-mode
___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


Re: [U-Boot] [PATCH v2 1/2] spi: zynqmp_qspi: Add support for ZynqMP qspi driver

2018-04-09 Thread Siva Durga Prasad Paladugu
H Jagan,

Any further comments on this. I am waiting for your reply on some of my replies 
to your comment.

Thanks,
Siva

> -Original Message-
> From: U-Boot [mailto:u-boot-boun...@lists.denx.de] On Behalf Of Siva
> Durga Prasad Paladugu
> Sent: Wednesday, February 07, 2018 3:40 PM
> To: Jagan Teki 
> Cc: U-Boot-Denx 
> Subject: Re: [U-Boot] [PATCH v2 1/2] spi: zynqmp_qspi: Add support for
> ZynqMP qspi driver
> 
> [This sender failed our fraud detection checks and may not be who they
> appear to be. Learn about spoofing at http://aka.ms/LearnAboutSpoofing]
> 
> Hi Jagan,
> 
> 
> > -Original Message-
> > From: Jagan Teki [mailto:ja...@amarulasolutions.com]
> > Sent: Tuesday, January 23, 2018 10:41 PM
> > To: Siva Durga Prasad Paladugu 
> > Cc: U-Boot-Denx ; Siva Durga Prasad Paladugu
> > 
> > Subject: Re: [U-Boot] [PATCH v2 1/2] spi: zynqmp_qspi: Add support for
> > ZynqMP qspi driver
> >
> > On Thu, Jan 4, 2018 at 1:07 PM, Siva Durga Prasad Paladugu
> >  wrote:
> > > This patch adds qspi driver support for ZynqMP SoC. This driver is
> > > responsible for communicating with qspi flash devices.
> > >
> > > Signed-off-by: Siva Durga Prasad Paladugu 
> > > ---
> > > Changes from v1:
> > > - Rebased on top of latest master
> > > - Moved macro definitions to .h file as per comment
> > > - Fixed magic values with macros as per comment
> > > ---
> > >  arch/arm/cpu/armv8/zynqmp/Kconfig  |   7 +
> > >  arch/arm/include/asm/arch-zynqmp/zynqmp_qspi.h | 154 ++
> > >  drivers/spi/Makefile   |   1 +
> > >  drivers/spi/zynqmp_qspi.c  | 678
> > +
> >
> > Was this gqspi like linux spi-zynqmp-gqspi.c or different?
> Yes.
> 
> >
> > >  4 files changed, 840 insertions(+)
> > >  create mode 100644 arch/arm/include/asm/arch-
> > zynqmp/zynqmp_qspi.h
> > >  create mode 100644 drivers/spi/zynqmp_qspi.c
> > >
> > > diff --git a/arch/arm/cpu/armv8/zynqmp/Kconfig
> > > b/arch/arm/cpu/armv8/zynqmp/Kconfig
> > > index 3f922b4..2fe4f71 100644
> > > --- a/arch/arm/cpu/armv8/zynqmp/Kconfig
> > > +++ b/arch/arm/cpu/armv8/zynqmp/Kconfig
> > > @@ -65,6 +65,13 @@ config PMUFW_INIT_FILE
> > >   Include external PMUFW (Platform Management Unit FirmWare)
> to
> > >   a Xilinx bootable image (boot.bin).
> > >
> > > +config ZYNQMP_QSPI
> > > +   bool "Configure ZynqMP QSPI"
> > > +   select DM_SPI
> > > +   help
> > > + This option is used to enable ZynqMP QSPI controller driver
> which
> > > + is used to communicate with qspi flash devices.
> >
> > I've commented this before, what is the reason for adding spi kconfig
> > entry in arch area instead of drivers/spi?
> 
> I might have missed it, Will move to drivers/spi
> >
> > > +
> > >  config ZYNQMP_USB
> > > bool "Configure ZynqMP USB"
> > >
> > > diff --git a/arch/arm/include/asm/arch-zynqmp/zynqmp_qspi.h
> > > b/arch/arm/include/asm/arch-zynqmp/zynqmp_qspi.h
> > > new file mode 100644
> > > index 000..5e2926e
> > > --- /dev/null
> > > +++ b/arch/arm/include/asm/arch-zynqmp/zynqmp_qspi.h
> > > @@ -0,0 +1,154 @@
> > > +/*
> > > + * (C) Copyright 2014 - 2015 Xilinx
> > > + *
> > > + * Xilinx ZynqMP Quad-SPI(QSPI) controller driver (master mode
> > > +only)
> > > + *
> > > + * SPDX-License-Identifier:GPL-2.0+
> > > + */
> > > +
> > > +#ifndef _ASM_ARCH_ZYNQMP_QSPI_H_
> > > +#define _ASM_ARCH_ZYNQMP_QSPI_H_
> > > +
> > > +#define ZYNQMP_QSPI_GFIFO_STRT_MODE_MASK   BIT(29)
> > > +#define ZYNQMP_QSPI_CONFIG_MODE_EN_MASK(3 << 30)
> > > +#define ZYNQMP_QSPI_CONFIG_DMA_MODE(2 << 30)
> > > +#define ZYNQMP_QSPI_CONFIG_CPHA_MASK   BIT(2)
> > > +#define ZYNQMP_QSPI_CONFIG_CPOL_MASK   BIT(1)
> > > +
> > > +/* QSPI MIO's count for different connection topologies */
> > > +#define ZYNQMP_QSPI_MIO_NUM_QSPI0  6
> > > +#define ZYNQMP_QSPI_MIO_NUM_QSPI1  5
> > > +#define ZYNQMP_QSPI_MIO_NUM_QSPI1_CS   1
> > > +
> > > +/*
> > > + * QSPI Interrupt Registers bit Masks
> > > + *
> > > + * All the four interrupt registers (Status/Mask/Enable/Disable)
> 

Re: [U-Boot] [PATCH v2 1/2] spi: zynqmp_qspi: Add support for ZynqMP qspi driver

2018-02-07 Thread Siva Durga Prasad Paladugu
Hi Jagan,


> -Original Message-
> From: Jagan Teki [mailto:ja...@amarulasolutions.com]
> Sent: Tuesday, January 23, 2018 10:41 PM
> To: Siva Durga Prasad Paladugu 
> Cc: U-Boot-Denx ; Siva Durga Prasad Paladugu
> 
> Subject: Re: [U-Boot] [PATCH v2 1/2] spi: zynqmp_qspi: Add support for
> ZynqMP qspi driver
> 
> On Thu, Jan 4, 2018 at 1:07 PM, Siva Durga Prasad Paladugu
>  wrote:
> > This patch adds qspi driver support for ZynqMP SoC. This driver is
> > responsible for communicating with qspi flash devices.
> >
> > Signed-off-by: Siva Durga Prasad Paladugu 
> > ---
> > Changes from v1:
> > - Rebased on top of latest master
> > - Moved macro definitions to .h file as per comment
> > - Fixed magic values with macros as per comment
> > ---
> >  arch/arm/cpu/armv8/zynqmp/Kconfig  |   7 +
> >  arch/arm/include/asm/arch-zynqmp/zynqmp_qspi.h | 154 ++
> >  drivers/spi/Makefile   |   1 +
> >  drivers/spi/zynqmp_qspi.c  | 678
> +
> 
> Was this gqspi like linux spi-zynqmp-gqspi.c or different?
Yes.

> 
> >  4 files changed, 840 insertions(+)
> >  create mode 100644 arch/arm/include/asm/arch-
> zynqmp/zynqmp_qspi.h
> >  create mode 100644 drivers/spi/zynqmp_qspi.c
> >
> > diff --git a/arch/arm/cpu/armv8/zynqmp/Kconfig
> > b/arch/arm/cpu/armv8/zynqmp/Kconfig
> > index 3f922b4..2fe4f71 100644
> > --- a/arch/arm/cpu/armv8/zynqmp/Kconfig
> > +++ b/arch/arm/cpu/armv8/zynqmp/Kconfig
> > @@ -65,6 +65,13 @@ config PMUFW_INIT_FILE
> >   Include external PMUFW (Platform Management Unit FirmWare) to
> >   a Xilinx bootable image (boot.bin).
> >
> > +config ZYNQMP_QSPI
> > +   bool "Configure ZynqMP QSPI"
> > +   select DM_SPI
> > +   help
> > + This option is used to enable ZynqMP QSPI controller driver which
> > + is used to communicate with qspi flash devices.
> 
> I've commented this before, what is the reason for adding spi kconfig entry
> in arch area instead of drivers/spi?

I might have missed it, Will move to drivers/spi
> 
> > +
> >  config ZYNQMP_USB
> > bool "Configure ZynqMP USB"
> >
> > diff --git a/arch/arm/include/asm/arch-zynqmp/zynqmp_qspi.h
> > b/arch/arm/include/asm/arch-zynqmp/zynqmp_qspi.h
> > new file mode 100644
> > index 000..5e2926e
> > --- /dev/null
> > +++ b/arch/arm/include/asm/arch-zynqmp/zynqmp_qspi.h
> > @@ -0,0 +1,154 @@
> > +/*
> > + * (C) Copyright 2014 - 2015 Xilinx
> > + *
> > + * Xilinx ZynqMP Quad-SPI(QSPI) controller driver (master mode only)
> > + *
> > + * SPDX-License-Identifier:GPL-2.0+
> > + */
> > +
> > +#ifndef _ASM_ARCH_ZYNQMP_QSPI_H_
> > +#define _ASM_ARCH_ZYNQMP_QSPI_H_
> > +
> > +#define ZYNQMP_QSPI_GFIFO_STRT_MODE_MASK   BIT(29)
> > +#define ZYNQMP_QSPI_CONFIG_MODE_EN_MASK(3 << 30)
> > +#define ZYNQMP_QSPI_CONFIG_DMA_MODE(2 << 30)
> > +#define ZYNQMP_QSPI_CONFIG_CPHA_MASK   BIT(2)
> > +#define ZYNQMP_QSPI_CONFIG_CPOL_MASK   BIT(1)
> > +
> > +/* QSPI MIO's count for different connection topologies */
> > +#define ZYNQMP_QSPI_MIO_NUM_QSPI0  6
> > +#define ZYNQMP_QSPI_MIO_NUM_QSPI1  5
> > +#define ZYNQMP_QSPI_MIO_NUM_QSPI1_CS   1
> > +
> > +/*
> > + * QSPI Interrupt Registers bit Masks
> > + *
> > + * All the four interrupt registers (Status/Mask/Enable/Disable) have
> > +the same
> > + * bit definitions.
> > + */
> > +#define ZYNQMP_QSPI_IXR_TXNFULL_MASK   0x0004 /* QSPI TX
> FIFO Overflow */
> > +#define ZYNQMP_QSPI_IXR_TXFULL_MASK0x0008 /* QSPI TX
> FIFO is full */
> > +#define ZYNQMP_QSPI_IXR_RXNEMTY_MASK   0x0010 /* QSPI RX
> FIFO Not Empty */
> > +#define ZYNQMP_QSPI_IXR_GFEMTY_MASK0x0080 /* QSPI
> Generic FIFO Empty */
> > +#define ZYNQMP_QSPI_IXR_ALL_MASK
> (ZYNQMP_QSPI_IXR_TXNFULL_MASK | \
> > +   ZYNQMP_QSPI_IXR_RXNEMTY_MASK)
> > +
> > +/*
> > + * QSPI Enable Register bit Masks
> > + *
> > + * This register is used to enable or disable the QSPI controller  */
> > +#define ZYNQMP_QSPI_ENABLE_ENABLE_MASK 0x0001 /* QSPI
> Enable Bit
> > +Mask */
> > +
> > +#define ZYNQMP_QSPI_GFIFO_LOW_BUS  BIT(14)
> > +#define ZYNQMP_QSPI_GFIFO_CS_LOWER BIT(12)
> > +#define ZYNQMP_QSPI_GFIFO_UP_BUS   BIT(15)
> > +#define ZYNQMP_QSPI_GFIFO_CS_UPPER

Re: [U-Boot] [PATCH v2 1/2] spi: zynqmp_qspi: Add support for ZynqMP qspi driver

2018-01-23 Thread Jagan Teki
On Thu, Jan 4, 2018 at 1:07 PM, Siva Durga Prasad Paladugu
 wrote:
> This patch adds qspi driver support for ZynqMP SoC. This
> driver is responsible for communicating with qspi flash
> devices.
>
> Signed-off-by: Siva Durga Prasad Paladugu 
> ---
> Changes from v1:
> - Rebased on top of latest master
> - Moved macro definitions to .h file as per comment
> - Fixed magic values with macros as per comment
> ---
>  arch/arm/cpu/armv8/zynqmp/Kconfig  |   7 +
>  arch/arm/include/asm/arch-zynqmp/zynqmp_qspi.h | 154 ++
>  drivers/spi/Makefile   |   1 +
>  drivers/spi/zynqmp_qspi.c  | 678 
> +

Was this gqspi like linux spi-zynqmp-gqspi.c or different?

>  4 files changed, 840 insertions(+)
>  create mode 100644 arch/arm/include/asm/arch-zynqmp/zynqmp_qspi.h
>  create mode 100644 drivers/spi/zynqmp_qspi.c
>
> diff --git a/arch/arm/cpu/armv8/zynqmp/Kconfig 
> b/arch/arm/cpu/armv8/zynqmp/Kconfig
> index 3f922b4..2fe4f71 100644
> --- a/arch/arm/cpu/armv8/zynqmp/Kconfig
> +++ b/arch/arm/cpu/armv8/zynqmp/Kconfig
> @@ -65,6 +65,13 @@ config PMUFW_INIT_FILE
>   Include external PMUFW (Platform Management Unit FirmWare) to
>   a Xilinx bootable image (boot.bin).
>
> +config ZYNQMP_QSPI
> +   bool "Configure ZynqMP QSPI"
> +   select DM_SPI
> +   help
> + This option is used to enable ZynqMP QSPI controller driver which
> + is used to communicate with qspi flash devices.

I've commented this before, what is the reason for adding spi kconfig
entry in arch area instead of drivers/spi?

> +
>  config ZYNQMP_USB
> bool "Configure ZynqMP USB"
>
> diff --git a/arch/arm/include/asm/arch-zynqmp/zynqmp_qspi.h 
> b/arch/arm/include/asm/arch-zynqmp/zynqmp_qspi.h
> new file mode 100644
> index 000..5e2926e
> --- /dev/null
> +++ b/arch/arm/include/asm/arch-zynqmp/zynqmp_qspi.h
> @@ -0,0 +1,154 @@
> +/*
> + * (C) Copyright 2014 - 2015 Xilinx
> + *
> + * Xilinx ZynqMP Quad-SPI(QSPI) controller driver (master mode only)
> + *
> + * SPDX-License-Identifier:GPL-2.0+
> + */
> +
> +#ifndef _ASM_ARCH_ZYNQMP_QSPI_H_
> +#define _ASM_ARCH_ZYNQMP_QSPI_H_
> +
> +#define ZYNQMP_QSPI_GFIFO_STRT_MODE_MASK   BIT(29)
> +#define ZYNQMP_QSPI_CONFIG_MODE_EN_MASK(3 << 30)
> +#define ZYNQMP_QSPI_CONFIG_DMA_MODE(2 << 30)
> +#define ZYNQMP_QSPI_CONFIG_CPHA_MASK   BIT(2)
> +#define ZYNQMP_QSPI_CONFIG_CPOL_MASK   BIT(1)
> +
> +/* QSPI MIO's count for different connection topologies */
> +#define ZYNQMP_QSPI_MIO_NUM_QSPI0  6
> +#define ZYNQMP_QSPI_MIO_NUM_QSPI1  5
> +#define ZYNQMP_QSPI_MIO_NUM_QSPI1_CS   1
> +
> +/*
> + * QSPI Interrupt Registers bit Masks
> + *
> + * All the four interrupt registers (Status/Mask/Enable/Disable) have the 
> same
> + * bit definitions.
> + */
> +#define ZYNQMP_QSPI_IXR_TXNFULL_MASK   0x0004 /* QSPI TX FIFO Overflow */
> +#define ZYNQMP_QSPI_IXR_TXFULL_MASK0x0008 /* QSPI TX FIFO is full */
> +#define ZYNQMP_QSPI_IXR_RXNEMTY_MASK   0x0010 /* QSPI RX FIFO Not Empty 
> */
> +#define ZYNQMP_QSPI_IXR_GFEMTY_MASK0x0080 /* QSPI Generic FIFO Empty 
> */
> +#define ZYNQMP_QSPI_IXR_ALL_MASK   (ZYNQMP_QSPI_IXR_TXNFULL_MASK | \
> +   ZYNQMP_QSPI_IXR_RXNEMTY_MASK)
> +
> +/*
> + * QSPI Enable Register bit Masks
> + *
> + * This register is used to enable or disable the QSPI controller
> + */
> +#define ZYNQMP_QSPI_ENABLE_ENABLE_MASK 0x0001 /* QSPI Enable Bit Mask */
> +
> +#define ZYNQMP_QSPI_GFIFO_LOW_BUS  BIT(14)
> +#define ZYNQMP_QSPI_GFIFO_CS_LOWER BIT(12)
> +#define ZYNQMP_QSPI_GFIFO_UP_BUS   BIT(15)
> +#define ZYNQMP_QSPI_GFIFO_CS_UPPER BIT(13)
> +#define ZYNQMP_QSPI_SPI_MODE_QSPI  (3 << 10)
> +#define ZYNQMP_QSPI_SPI_MODE_SPI   BIT(10)
> +#define ZYNQMP_QSPI_SPI_MODE_DUAL_SPI  (2 << 10)
> +#define ZYNQMP_QSPI_IMD_DATA_CS_ASSERT 5
> +#define ZYNQMP_QSPI_IMD_DATA_CS_DEASSERT   5
> +#define ZYNQMP_QSPI_GFIFO_TX   BIT(16)
> +#define ZYNQMP_QSPI_GFIFO_RX   BIT(17)
> +#define ZYNQMP_QSPI_GFIFO_STRIPE_MASK  BIT(18)
> +#define ZYNQMP_QSPI_GFIFO_IMD_MASK 0xFF
> +#define ZYNQMP_QSPI_GFIFO_EXP_MASK BIT(9)
> +#define ZYNQMP_QSPI_GFIFO_DATA_XFR_MASKBIT(8)
> +#define ZYNQMP_QSPI_STRT_GEN_FIFO  BIT(28)
> +#define ZYNQMP_QSPI_GEN_FIFO_STRT_MOD  BIT(29)
> +#define ZYNQMP_QSPI_GFIFO_WP_HOLD  BIT(19)
> +#define ZYNQMP_QSPI_BAUD_DIV_MASK  (7 << 3)
> +#define ZYNQMP_QSPI_DFLT_BAUD_RATE_DIV BIT(3)
> +#define ZYNQMP_QSPI_GFIFO_ALL_INT_MASK 0xFBE
> +#define ZYNQMP_QSPI_DMA_DST_I_STS_DONE BIT(1)
> +#define ZYNQMP_QSPI_DMA_DST_I_STS_MASK 0xFE
> +#define MODEBITS   0x6
> +
> +#define QUAD_OUT_READ_CMD  0x6B
> +#define QUAD_PAGE_PROGRAM_CMD  0x32
> +#define DUAL_OUTPUT_FASTRD_CMD 0x3B
> +
> +#define ZYNQMP_QSPI_GFIFO_SELECT   BIT(0)
> +
> +#define Z

Re: [U-Boot] [PATCH v2 1/2] spi: zynqmp_qspi: Add support for ZynqMP qspi driver

2018-01-16 Thread Siva Durga Prasad Paladugu
Hi Jagan,

Ping!

Thanks,
Siva

> -Original Message-
> From: Siva Durga Prasad Paladugu [mailto:siva.durga.palad...@xilinx.com]
> Sent: Thursday, January 04, 2018 1:08 PM
> To: u-boot@lists.denx.de
> Cc: jagannadh.t...@gmail.com; Siva Durga Prasad Paladugu
> 
> Subject: [PATCH v2 1/2] spi: zynqmp_qspi: Add support for ZynqMP qspi
> driver
> 
> This patch adds qspi driver support for ZynqMP SoC. This driver is
> responsible for communicating with qspi flash devices.
> 
> Signed-off-by: Siva Durga Prasad Paladugu 
> ---
> Changes from v1:
> - Rebased on top of latest master
> - Moved macro definitions to .h file as per comment
> - Fixed magic values with macros as per comment
> ---
>  arch/arm/cpu/armv8/zynqmp/Kconfig  |   7 +
>  arch/arm/include/asm/arch-zynqmp/zynqmp_qspi.h | 154 ++
>  drivers/spi/Makefile   |   1 +
>  drivers/spi/zynqmp_qspi.c  | 678
> +
>  4 files changed, 840 insertions(+)
>  create mode 100644 arch/arm/include/asm/arch-zynqmp/zynqmp_qspi.h
>  create mode 100644 drivers/spi/zynqmp_qspi.c
> 
> diff --git a/arch/arm/cpu/armv8/zynqmp/Kconfig
> b/arch/arm/cpu/armv8/zynqmp/Kconfig
> index 3f922b4..2fe4f71 100644
> --- a/arch/arm/cpu/armv8/zynqmp/Kconfig
> +++ b/arch/arm/cpu/armv8/zynqmp/Kconfig
> @@ -65,6 +65,13 @@ config PMUFW_INIT_FILE
> Include external PMUFW (Platform Management Unit FirmWare)
> to
> a Xilinx bootable image (boot.bin).
> 
> +config ZYNQMP_QSPI
> + bool "Configure ZynqMP QSPI"
> + select DM_SPI
> + help
> +   This option is used to enable ZynqMP QSPI controller driver which
> +   is used to communicate with qspi flash devices.
> +
>  config ZYNQMP_USB
>   bool "Configure ZynqMP USB"
> 
> diff --git a/arch/arm/include/asm/arch-zynqmp/zynqmp_qspi.h
> b/arch/arm/include/asm/arch-zynqmp/zynqmp_qspi.h
> new file mode 100644
> index 000..5e2926e
> --- /dev/null
> +++ b/arch/arm/include/asm/arch-zynqmp/zynqmp_qspi.h
> @@ -0,0 +1,154 @@
> +/*
> + * (C) Copyright 2014 - 2015 Xilinx
> + *
> + * Xilinx ZynqMP Quad-SPI(QSPI) controller driver (master mode only)
> + *
> + * SPDX-License-Identifier:  GPL-2.0+
> + */
> +
> +#ifndef _ASM_ARCH_ZYNQMP_QSPI_H_
> +#define _ASM_ARCH_ZYNQMP_QSPI_H_
> +
> +#define ZYNQMP_QSPI_GFIFO_STRT_MODE_MASK BIT(29)
> +#define ZYNQMP_QSPI_CONFIG_MODE_EN_MASK  (3 << 30)
> +#define ZYNQMP_QSPI_CONFIG_DMA_MODE  (2 << 30)
> +#define ZYNQMP_QSPI_CONFIG_CPHA_MASK BIT(2)
> +#define ZYNQMP_QSPI_CONFIG_CPOL_MASK BIT(1)
> +
> +/* QSPI MIO's count for different connection topologies */
> +#define ZYNQMP_QSPI_MIO_NUM_QSPI06
> +#define ZYNQMP_QSPI_MIO_NUM_QSPI15
> +#define ZYNQMP_QSPI_MIO_NUM_QSPI1_CS 1
> +
> +/*
> + * QSPI Interrupt Registers bit Masks
> + *
> + * All the four interrupt registers (Status/Mask/Enable/Disable) have
> +the same
> + * bit definitions.
> + */
> +#define ZYNQMP_QSPI_IXR_TXNFULL_MASK 0x0004 /* QSPI TX FIFO
> Overflow */
> +#define ZYNQMP_QSPI_IXR_TXFULL_MASK  0x0008 /* QSPI TX FIFO
> is full */
> +#define ZYNQMP_QSPI_IXR_RXNEMTY_MASK 0x0010 /* QSPI
> RX FIFO Not Empty */
> +#define ZYNQMP_QSPI_IXR_GFEMTY_MASK  0x0080 /* QSPI Generic
> FIFO Empty */
> +#define ZYNQMP_QSPI_IXR_ALL_MASK
>   (ZYNQMP_QSPI_IXR_TXNFULL_MASK | \
> +
>   ZYNQMP_QSPI_IXR_RXNEMTY_MASK)
> +
> +/*
> + * QSPI Enable Register bit Masks
> + *
> + * This register is used to enable or disable the QSPI controller  */
> +#define ZYNQMP_QSPI_ENABLE_ENABLE_MASK   0x0001 /* QSPI
> Enable Bit Mask */
> +
> +#define ZYNQMP_QSPI_GFIFO_LOW_BUSBIT(14)
> +#define ZYNQMP_QSPI_GFIFO_CS_LOWER   BIT(12)
> +#define ZYNQMP_QSPI_GFIFO_UP_BUS BIT(15)
> +#define ZYNQMP_QSPI_GFIFO_CS_UPPER   BIT(13)
> +#define ZYNQMP_QSPI_SPI_MODE_QSPI(3 << 10)
> +#define ZYNQMP_QSPI_SPI_MODE_SPI BIT(10)
> +#define ZYNQMP_QSPI_SPI_MODE_DUAL_SPI(2 << 10)
> +#define ZYNQMP_QSPI_IMD_DATA_CS_ASSERT   5
> +#define ZYNQMP_QSPI_IMD_DATA_CS_DEASSERT 5
> +#define ZYNQMP_QSPI_GFIFO_TX BIT(16)
> +#define ZYNQMP_QSPI_GFIFO_RX BIT(17)
> +#define ZYNQMP_QSPI_GFIFO_STRIPE_MASKBIT(18)
> +#define ZYNQMP_QSPI_GFIFO_IMD_MASK   0xFF
> +#define ZYNQMP_QSPI_GFIFO_EXP_MASK   BIT(9)
> +#define ZYNQMP_QSPI_GFIFO_DATA_XFR_MASK  BIT(8)
> +#define ZYNQMP_QSPI_STRT_GEN_FIFOBIT(28)
> +#define ZYNQMP_QSPI_GEN_FIFO_STRT_MODBIT(29)
> +#define ZYNQMP_QSPI_GFIFO_WP_HOLDBIT(19)
> +#define ZYNQMP_QSPI_BAUD_DIV_MASK(7 << 3)
> +#define ZYNQMP_QSPI_DFLT_BAUD_RATE_DIV   BIT(3)
> +#define ZYNQMP_QSPI_GFIFO_ALL_INT_MASK   0xFBE
> +#define ZYNQMP_QSPI_DMA_DST_I_STS_DONE   BIT(1)
> +#define ZYNQMP_QSPI_DMA_DST_I_STS_MASK   0xFE
> +#define MODEBITS 0x6
> +
> +#define QUAD_OUT_READ_CMD0x6B
> +#define QUAD_PAGE_PROGRAM_CMD0x32
> +#define DUAL_OUTPUT_FASTRD_CMD   0x3B
> +