public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [U-Boot] [PATCH v5 00/10] spi: Add Atmel QuadSPI driver
@ 2019-06-18  8:51 Tudor.Ambarus at microchip.com
  2019-06-18  8:51 ` [U-Boot] [PATCH v5 01/10] dt-bindings: spi: add bindings for Atmel QSPI driver Tudor.Ambarus at microchip.com
                   ` (10 more replies)
  0 siblings, 11 replies; 22+ messages in thread
From: Tudor.Ambarus at microchip.com @ 2019-06-18  8:51 UTC (permalink / raw)
  To: u-boot

From: Tudor Ambarus <tudor.ambarus@microchip.com>

Backport the driver from linux v5.1-rc5 and adapt it for u-boot.
Tested on sama5d2_xplained Rev B with mx25l25635e spi-nor flash,
and on sama5d27_som1_ek with sst26vf064b spi-nor flash.

V5: drop struct platform_device *pdev; linux leftover, add 2 new
blank lines

v4: Update Kconfig description

v3: fix following config warnings reported by travis:
./tools/genboardscfg.py
WARNING: no status info for 'sama5d2_xplained_qspiflash'
WARNING: no maintainers for 'sama5d2_xplained_qspiflash'
WARNING: no status info for 'sama5d27_som1_ek_qspiflash'
WARNING: no maintainers for 'sama5d27_som1_ek_qspiflash'

v2: update/add configs and update sama5d2_xplained dts

Cyrille Pitchen (2):
  ARM: dts: at91: sama5d2_xplained: fix QSPI0 node
  ARM: at91: sama5: add common environment for QSPI

Eugen Hristev (1):
  configs: sama5d2_xplained: add support QSPI flash boot

Tudor Ambarus (7):
  dt-bindings: spi: add bindings for Atmel QSPI driver
  spi: Add Atmel QuadSPI driver
  configs: sama5d2_xplained: enable qspi controller and flashes
  configs: sama5d27_som1_ek: enable qspi controller and flashes
  configs: sama5d2_xplained: add qspiflash_defconfig
  configs: sama5d27_som1_ek: add qspiflash_defconfig
  configs: sama5d27_som1_ek: qspi: use common memory layout

 arch/arm/dts/at91-sama5d2_xplained.dts         |  36 +-
 board/atmel/sama5d27_som1_ek/MAINTAINERS       |   1 +
 board/atmel/sama5d2_xplained/MAINTAINERS       |   1 +
 configs/sama5d27_som1_ek_mmc1_defconfig        |   2 +
 configs/sama5d27_som1_ek_mmc_defconfig         |   2 +
 configs/sama5d27_som1_ek_qspiflash_defconfig   | 101 +++++
 configs/sama5d2_xplained_emmc_defconfig        |   5 +
 configs/sama5d2_xplained_mmc_defconfig         |   5 +
 configs/sama5d2_xplained_qspiflash_defconfig   | 101 +++++
 configs/sama5d2_xplained_spiflash_defconfig    |   5 +
 doc/device-tree-bindings/spi/atmel-quadspi.txt |  37 ++
 drivers/spi/Kconfig                            |   8 +
 drivers/spi/Makefile                           |   1 +
 drivers/spi/atmel-quadspi.c                    | 536 +++++++++++++++++++++++++
 include/configs/at91-sama5_common.h            |   8 +
 include/configs/sama5d27_som1_ek.h             |   7 -
 include/configs/sama5d2_xplained.h             |  11 +
 17 files changed, 841 insertions(+), 26 deletions(-)
 create mode 100644 configs/sama5d27_som1_ek_qspiflash_defconfig
 create mode 100644 configs/sama5d2_xplained_qspiflash_defconfig
 create mode 100644 doc/device-tree-bindings/spi/atmel-quadspi.txt
 create mode 100644 drivers/spi/atmel-quadspi.c

-- 
2.9.5

^ permalink raw reply	[flat|nested] 22+ messages in thread

* [U-Boot] [PATCH v5 01/10] dt-bindings: spi: add bindings for Atmel QSPI driver
  2019-06-18  8:51 [U-Boot] [PATCH v5 00/10] spi: Add Atmel QuadSPI driver Tudor.Ambarus at microchip.com
@ 2019-06-18  8:51 ` Tudor.Ambarus at microchip.com
  2019-06-29 14:53   ` Jagan Teki
  2019-06-18  8:51 ` [U-Boot] [PATCH v5 02/10] spi: Add Atmel QuadSPI driver Tudor.Ambarus at microchip.com
                   ` (9 subsequent siblings)
  10 siblings, 1 reply; 22+ messages in thread
From: Tudor.Ambarus at microchip.com @ 2019-06-18  8:51 UTC (permalink / raw)
  To: u-boot

From: Tudor Ambarus <tudor.ambarus@microchip.com>

Describe the DT bindings for the driver of the Atmel QSPI
controller. Taken form linux v5.1-rc5.

Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com>
---
v5: no change
v4: no change
v3: no change
v2: no change

 doc/device-tree-bindings/spi/atmel-quadspi.txt | 37 ++++++++++++++++++++++++++
 1 file changed, 37 insertions(+)
 create mode 100644 doc/device-tree-bindings/spi/atmel-quadspi.txt

diff --git a/doc/device-tree-bindings/spi/atmel-quadspi.txt b/doc/device-tree-bindings/spi/atmel-quadspi.txt
new file mode 100644
index 000000000000..7c40ea694352
--- /dev/null
+++ b/doc/device-tree-bindings/spi/atmel-quadspi.txt
@@ -0,0 +1,37 @@
+* Atmel Quad Serial Peripheral Interface (QSPI)
+
+Required properties:
+- compatible:     Should be one of the following:
+		  - "atmel,sama5d2-qspi"
+		  - "microchip,sam9x60-qspi"
+- reg:            Should contain the locations and lengths of the base registers
+                  and the mapped memory.
+- reg-names:      Should contain the resource reg names:
+                  - qspi_base: configuration register address space
+                  - qspi_mmap: memory mapped address space
+- interrupts:     Should contain the interrupt for the device.
+- clocks:         Should reference the peripheral clock and the QSPI system
+                  clock if available.
+- clock-names:    Should contain "pclk" for the peripheral clock and "qspick"
+                  for the system clock when available.
+- #address-cells: Should be <1>.
+- #size-cells:    Should be <0>.
+
+Example:
+
+spi at f0020000 {
+	compatible = "atmel,sama5d2-qspi";
+	reg = <0xf0020000 0x100>, <0xd0000000 0x8000000>;
+	reg-names = "qspi_base", "qspi_mmap";
+	interrupts = <52 IRQ_TYPE_LEVEL_HIGH 7>;
+	clocks = <&pmc PMC_TYPE_PERIPHERAL 52>;
+	clock-names = "pclk";
+	#address-cells = <1>;
+	#size-cells = <0>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&pinctrl_spi0_default>;
+
+	m25p80 at 0 {
+		...
+	};
+};
-- 
2.9.5

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [U-Boot] [PATCH v5 02/10] spi: Add Atmel QuadSPI driver
  2019-06-18  8:51 [U-Boot] [PATCH v5 00/10] spi: Add Atmel QuadSPI driver Tudor.Ambarus at microchip.com
  2019-06-18  8:51 ` [U-Boot] [PATCH v5 01/10] dt-bindings: spi: add bindings for Atmel QSPI driver Tudor.Ambarus at microchip.com
@ 2019-06-18  8:51 ` Tudor.Ambarus at microchip.com
  2019-06-29 14:38   ` Jagan Teki
  2019-06-18  8:51 ` [U-Boot] [PATCH v5 03/10] configs: sama5d2_xplained: enable qspi controller and flashes Tudor.Ambarus at microchip.com
                   ` (8 subsequent siblings)
  10 siblings, 1 reply; 22+ messages in thread
From: Tudor.Ambarus at microchip.com @ 2019-06-18  8:51 UTC (permalink / raw)
  To: u-boot

From: Tudor Ambarus <tudor.ambarus@microchip.com>

Backport the driver from linux v5.1-rc5 and adapt it for u-boot.
Tested on sama5d2_xplained Rev B with mx25l25635e spi-nor flash.

Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com>
---
v5: drop struct platform_device *pdev; linux leftover, 2 new blank lines
v4: update Kconfig description
v3: no change
v2: no change

 drivers/spi/Kconfig         |   8 +
 drivers/spi/Makefile        |   1 +
 drivers/spi/atmel-quadspi.c | 536 ++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 545 insertions(+)
 create mode 100644 drivers/spi/atmel-quadspi.c

diff --git a/drivers/spi/Kconfig b/drivers/spi/Kconfig
index 04ddb32a8f31..a9c080c4fe9c 100644
--- a/drivers/spi/Kconfig
+++ b/drivers/spi/Kconfig
@@ -49,6 +49,14 @@ config ATH79_SPI
 	  uses driver model and requires a device tree binding to operate.
 	  please refer to doc/device-tree-bindings/spi/spi-ath79.txt.
 
+config ATMEL_QSPI
+	bool "Atmel Quad SPI Controller"
+	depends on ARCH_AT91
+	help
+	  Enable the Atmel Quad SPI controller in master mode. This driver
+	  does not support generic SPI. The implementation supports only the
+	  spi-mem interface.
+
 config ATMEL_SPI
 	bool "Atmel SPI driver"
 	default y if ARCH_AT91
diff --git a/drivers/spi/Makefile b/drivers/spi/Makefile
index 3f9f2fab2b9f..64c407e2eddf 100644
--- a/drivers/spi/Makefile
+++ b/drivers/spi/Makefile
@@ -18,6 +18,7 @@ endif
 
 obj-$(CONFIG_ALTERA_SPI) += altera_spi.o
 obj-$(CONFIG_ATH79_SPI) += ath79_spi.o
+obj-$(CONFIG_ATMEL_QSPI) += atmel-quadspi.o
 obj-$(CONFIG_ATMEL_SPI) += atmel_spi.o
 obj-$(CONFIG_BCM63XX_HSSPI) += bcm63xx_hsspi.o
 obj-$(CONFIG_BCM63XX_SPI) += bcm63xx_spi.o
diff --git a/drivers/spi/atmel-quadspi.c b/drivers/spi/atmel-quadspi.c
new file mode 100644
index 000000000000..7d9a54011dda
--- /dev/null
+++ b/drivers/spi/atmel-quadspi.c
@@ -0,0 +1,536 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Driver for Atmel QSPI Controller
+ *
+ * Copyright (C) 2015 Atmel Corporation
+ * Copyright (C) 2018 Cryptera A/S
+ *
+ * Author: Cyrille Pitchen <cyrille.pitchen@atmel.com>
+ * Author: Piotr Bugalski <bugalski.piotr@gmail.com>
+ */
+
+#include <asm/io.h>
+#include <clk.h>
+#include <common.h>
+#include <dm.h>
+#include <errno.h>
+#include <fdtdec.h>
+#include <linux/io.h>
+#include <linux/iopoll.h>
+#include <linux/ioport.h>
+#include <mach/clk.h>
+#include <spi.h>
+#include <spi-mem.h>
+
+/* QSPI register offsets */
+#define QSPI_CR      0x0000  /* Control Register */
+#define QSPI_MR      0x0004  /* Mode Register */
+#define QSPI_RD      0x0008  /* Receive Data Register */
+#define QSPI_TD      0x000c  /* Transmit Data Register */
+#define QSPI_SR      0x0010  /* Status Register */
+#define QSPI_IER     0x0014  /* Interrupt Enable Register */
+#define QSPI_IDR     0x0018  /* Interrupt Disable Register */
+#define QSPI_IMR     0x001c  /* Interrupt Mask Register */
+#define QSPI_SCR     0x0020  /* Serial Clock Register */
+
+#define QSPI_IAR     0x0030  /* Instruction Address Register */
+#define QSPI_ICR     0x0034  /* Instruction Code Register */
+#define QSPI_WICR    0x0034  /* Write Instruction Code Register */
+#define QSPI_IFR     0x0038  /* Instruction Frame Register */
+#define QSPI_RICR    0x003C  /* Read Instruction Code Register */
+
+#define QSPI_SMR     0x0040  /* Scrambling Mode Register */
+#define QSPI_SKR     0x0044  /* Scrambling Key Register */
+
+#define QSPI_WPMR    0x00E4  /* Write Protection Mode Register */
+#define QSPI_WPSR    0x00E8  /* Write Protection Status Register */
+
+#define QSPI_VERSION 0x00FC  /* Version Register */
+
+/* Bitfields in QSPI_CR (Control Register) */
+#define QSPI_CR_QSPIEN                  BIT(0)
+#define QSPI_CR_QSPIDIS                 BIT(1)
+#define QSPI_CR_SWRST                   BIT(7)
+#define QSPI_CR_LASTXFER                BIT(24)
+
+/* Bitfields in QSPI_MR (Mode Register) */
+#define QSPI_MR_SMM                     BIT(0)
+#define QSPI_MR_LLB                     BIT(1)
+#define QSPI_MR_WDRBT                   BIT(2)
+#define QSPI_MR_SMRM                    BIT(3)
+#define QSPI_MR_CSMODE_MASK             GENMASK(5, 4)
+#define QSPI_MR_CSMODE_NOT_RELOADED     (0 << 4)
+#define QSPI_MR_CSMODE_LASTXFER         (1 << 4)
+#define QSPI_MR_CSMODE_SYSTEMATICALLY   (2 << 4)
+#define QSPI_MR_NBBITS_MASK             GENMASK(11, 8)
+#define QSPI_MR_NBBITS(n)               ((((n) - 8) << 8) & QSPI_MR_NBBITS_MASK)
+#define QSPI_MR_DLYBCT_MASK             GENMASK(23, 16)
+#define QSPI_MR_DLYBCT(n)               (((n) << 16) & QSPI_MR_DLYBCT_MASK)
+#define QSPI_MR_DLYCS_MASK              GENMASK(31, 24)
+#define QSPI_MR_DLYCS(n)                (((n) << 24) & QSPI_MR_DLYCS_MASK)
+
+/* Bitfields in QSPI_SR/QSPI_IER/QSPI_IDR/QSPI_IMR  */
+#define QSPI_SR_RDRF                    BIT(0)
+#define QSPI_SR_TDRE                    BIT(1)
+#define QSPI_SR_TXEMPTY                 BIT(2)
+#define QSPI_SR_OVRES                   BIT(3)
+#define QSPI_SR_CSR                     BIT(8)
+#define QSPI_SR_CSS                     BIT(9)
+#define QSPI_SR_INSTRE                  BIT(10)
+#define QSPI_SR_QSPIENS                 BIT(24)
+
+#define QSPI_SR_CMD_COMPLETED	(QSPI_SR_INSTRE | QSPI_SR_CSR)
+
+/* Bitfields in QSPI_SCR (Serial Clock Register) */
+#define QSPI_SCR_CPOL                   BIT(0)
+#define QSPI_SCR_CPHA                   BIT(1)
+#define QSPI_SCR_SCBR_MASK              GENMASK(15, 8)
+#define QSPI_SCR_SCBR(n)                (((n) << 8) & QSPI_SCR_SCBR_MASK)
+#define QSPI_SCR_DLYBS_MASK             GENMASK(23, 16)
+#define QSPI_SCR_DLYBS(n)               (((n) << 16) & QSPI_SCR_DLYBS_MASK)
+
+/* Bitfields in QSPI_ICR (Read/Write Instruction Code Register) */
+#define QSPI_ICR_INST_MASK              GENMASK(7, 0)
+#define QSPI_ICR_INST(inst)             (((inst) << 0) & QSPI_ICR_INST_MASK)
+#define QSPI_ICR_OPT_MASK               GENMASK(23, 16)
+#define QSPI_ICR_OPT(opt)               (((opt) << 16) & QSPI_ICR_OPT_MASK)
+
+/* Bitfields in QSPI_IFR (Instruction Frame Register) */
+#define QSPI_IFR_WIDTH_MASK             GENMASK(2, 0)
+#define QSPI_IFR_WIDTH_SINGLE_BIT_SPI   (0 << 0)
+#define QSPI_IFR_WIDTH_DUAL_OUTPUT      (1 << 0)
+#define QSPI_IFR_WIDTH_QUAD_OUTPUT      (2 << 0)
+#define QSPI_IFR_WIDTH_DUAL_IO          (3 << 0)
+#define QSPI_IFR_WIDTH_QUAD_IO          (4 << 0)
+#define QSPI_IFR_WIDTH_DUAL_CMD         (5 << 0)
+#define QSPI_IFR_WIDTH_QUAD_CMD         (6 << 0)
+#define QSPI_IFR_INSTEN                 BIT(4)
+#define QSPI_IFR_ADDREN                 BIT(5)
+#define QSPI_IFR_OPTEN                  BIT(6)
+#define QSPI_IFR_DATAEN                 BIT(7)
+#define QSPI_IFR_OPTL_MASK              GENMASK(9, 8)
+#define QSPI_IFR_OPTL_1BIT              (0 << 8)
+#define QSPI_IFR_OPTL_2BIT              (1 << 8)
+#define QSPI_IFR_OPTL_4BIT              (2 << 8)
+#define QSPI_IFR_OPTL_8BIT              (3 << 8)
+#define QSPI_IFR_ADDRL                  BIT(10)
+#define QSPI_IFR_TFRTYP_MEM		BIT(12)
+#define QSPI_IFR_SAMA5D2_WRITE_TRSFR	BIT(13)
+#define QSPI_IFR_CRM                    BIT(14)
+#define QSPI_IFR_NBDUM_MASK             GENMASK(20, 16)
+#define QSPI_IFR_NBDUM(n)               (((n) << 16) & QSPI_IFR_NBDUM_MASK)
+#define QSPI_IFR_APBTFRTYP_READ		BIT(24)	/* Defined in SAM9X60 */
+
+/* Bitfields in QSPI_SMR (Scrambling Mode Register) */
+#define QSPI_SMR_SCREN                  BIT(0)
+#define QSPI_SMR_RVDIS                  BIT(1)
+
+/* Bitfields in QSPI_WPMR (Write Protection Mode Register) */
+#define QSPI_WPMR_WPEN                  BIT(0)
+#define QSPI_WPMR_WPKEY_MASK            GENMASK(31, 8)
+#define QSPI_WPMR_WPKEY(wpkey)          (((wpkey) << 8) & QSPI_WPMR_WPKEY_MASK)
+
+/* Bitfields in QSPI_WPSR (Write Protection Status Register) */
+#define QSPI_WPSR_WPVS                  BIT(0)
+#define QSPI_WPSR_WPVSRC_MASK           GENMASK(15, 8)
+#define QSPI_WPSR_WPVSRC(src)           (((src) << 8) & QSPI_WPSR_WPVSRC)
+
+struct atmel_qspi_caps {
+	bool has_qspick;
+	bool has_ricr;
+};
+
+struct atmel_qspi {
+	void __iomem *regs;
+	void __iomem *mem;
+	const struct atmel_qspi_caps *caps;
+	ulong bus_clk_rate;
+	u32 mr;
+};
+
+struct atmel_qspi_mode {
+	u8 cmd_buswidth;
+	u8 addr_buswidth;
+	u8 data_buswidth;
+	u32 config;
+};
+
+static const struct atmel_qspi_mode atmel_qspi_modes[] = {
+	{ 1, 1, 1, QSPI_IFR_WIDTH_SINGLE_BIT_SPI },
+	{ 1, 1, 2, QSPI_IFR_WIDTH_DUAL_OUTPUT },
+	{ 1, 1, 4, QSPI_IFR_WIDTH_QUAD_OUTPUT },
+	{ 1, 2, 2, QSPI_IFR_WIDTH_DUAL_IO },
+	{ 1, 4, 4, QSPI_IFR_WIDTH_QUAD_IO },
+	{ 2, 2, 2, QSPI_IFR_WIDTH_DUAL_CMD },
+	{ 4, 4, 4, QSPI_IFR_WIDTH_QUAD_CMD },
+};
+
+static inline bool atmel_qspi_is_compatible(const struct spi_mem_op *op,
+					    const struct atmel_qspi_mode *mode)
+{
+	if (op->cmd.buswidth != mode->cmd_buswidth)
+		return false;
+
+	if (op->addr.nbytes && op->addr.buswidth != mode->addr_buswidth)
+		return false;
+
+	if (op->data.nbytes && op->data.buswidth != mode->data_buswidth)
+		return false;
+
+	return true;
+}
+
+static int atmel_qspi_find_mode(const struct spi_mem_op *op)
+{
+	u32 i;
+
+	for (i = 0; i < ARRAY_SIZE(atmel_qspi_modes); i++)
+		if (atmel_qspi_is_compatible(op, &atmel_qspi_modes[i]))
+			return i;
+
+	return -ENOTSUPP;
+}
+
+static bool atmel_qspi_supports_op(struct spi_slave *slave,
+				   const struct spi_mem_op *op)
+{
+	if (atmel_qspi_find_mode(op) < 0)
+		return false;
+
+	/* special case not supported by hardware */
+	if (op->addr.nbytes == 2 && op->cmd.buswidth != op->addr.buswidth &&
+	    op->dummy.nbytes == 0)
+		return false;
+
+	return true;
+}
+
+static int atmel_qspi_set_cfg(struct atmel_qspi *aq,
+			      const struct spi_mem_op *op, u32 *offset)
+{
+	u32 iar, icr, ifr;
+	u32 dummy_cycles = 0;
+	int mode;
+
+	iar = 0;
+	icr = QSPI_ICR_INST(op->cmd.opcode);
+	ifr = QSPI_IFR_INSTEN;
+
+	mode = atmel_qspi_find_mode(op);
+	if (mode < 0)
+		return mode;
+	ifr |= atmel_qspi_modes[mode].config;
+
+	if (op->dummy.buswidth && op->dummy.nbytes)
+		dummy_cycles = op->dummy.nbytes * 8 / op->dummy.buswidth;
+
+	/*
+	 * The controller allows 24 and 32-bit addressing while NAND-flash
+	 * requires 16-bit long. Handling 8-bit long addresses is done using
+	 * the option field. For the 16-bit addresses, the workaround depends
+	 * of the number of requested dummy bits. If there are 8 or more dummy
+	 * cycles, the address is shifted and sent with the first dummy byte.
+	 * Otherwise opcode is disabled and the first byte of the address
+	 * contains the command opcode (works only if the opcode and address
+	 * use the same buswidth). The limitation is when the 16-bit address is
+	 * used without enough dummy cycles and the opcode is using a different
+	 * buswidth than the address.
+	 */
+	if (op->addr.buswidth) {
+		switch (op->addr.nbytes) {
+		case 0:
+			break;
+		case 1:
+			ifr |= QSPI_IFR_OPTEN | QSPI_IFR_OPTL_8BIT;
+			icr |= QSPI_ICR_OPT(op->addr.val & 0xff);
+			break;
+		case 2:
+			if (dummy_cycles < 8 / op->addr.buswidth) {
+				ifr &= ~QSPI_IFR_INSTEN;
+				ifr |= QSPI_IFR_ADDREN;
+				iar = (op->cmd.opcode << 16) |
+					(op->addr.val & 0xffff);
+			} else {
+				ifr |= QSPI_IFR_ADDREN;
+				iar = (op->addr.val << 8) & 0xffffff;
+				dummy_cycles -= 8 / op->addr.buswidth;
+			}
+			break;
+		case 3:
+			ifr |= QSPI_IFR_ADDREN;
+			iar = op->addr.val & 0xffffff;
+			break;
+		case 4:
+			ifr |= QSPI_IFR_ADDREN | QSPI_IFR_ADDRL;
+			iar = op->addr.val & 0x7ffffff;
+			break;
+		default:
+			return -ENOTSUPP;
+		}
+	}
+
+	/* offset of the data access in the QSPI memory space */
+	*offset = iar;
+
+	/* Set number of dummy cycles */
+	if (dummy_cycles)
+		ifr |= QSPI_IFR_NBDUM(dummy_cycles);
+
+	/* Set data enable */
+	if (op->data.nbytes)
+		ifr |= QSPI_IFR_DATAEN;
+
+	/*
+	 * If the QSPI controller is set in regular SPI mode, set it in
+	 * Serial Memory Mode (SMM).
+	 */
+	if (aq->mr != QSPI_MR_SMM) {
+		writel(QSPI_MR_SMM, aq->regs + QSPI_MR);
+		aq->mr = QSPI_MR_SMM;
+	}
+
+	/* Clear pending interrupts */
+	(void)readl(aq->regs + QSPI_SR);
+
+	if (aq->caps->has_ricr) {
+		if (!op->addr.nbytes && op->data.dir == SPI_MEM_DATA_IN)
+			ifr |= QSPI_IFR_APBTFRTYP_READ;
+
+		/* Set QSPI Instruction Frame registers */
+		writel(iar, aq->regs + QSPI_IAR);
+		if (op->data.dir == SPI_MEM_DATA_IN)
+			writel(icr, aq->regs + QSPI_RICR);
+		else
+			writel(icr, aq->regs + QSPI_WICR);
+		writel(ifr, aq->regs + QSPI_IFR);
+	} else {
+		if (op->data.dir == SPI_MEM_DATA_OUT)
+			ifr |= QSPI_IFR_SAMA5D2_WRITE_TRSFR;
+
+		/* Set QSPI Instruction Frame registers */
+		writel(iar, aq->regs + QSPI_IAR);
+		writel(icr, aq->regs + QSPI_ICR);
+		writel(ifr, aq->regs + QSPI_IFR);
+	}
+
+	return 0;
+}
+
+static int atmel_qspi_exec_op(struct spi_slave *slave,
+			      const struct spi_mem_op *op)
+{
+	struct atmel_qspi *aq = dev_get_priv(slave->dev->parent);
+	u32 sr, imr, offset;
+	int err;
+
+	err = atmel_qspi_set_cfg(aq, op, &offset);
+	if (err)
+		return err;
+
+	/* Skip to the final steps if there is no data */
+	if (op->data.nbytes) {
+		/* Dummy read of QSPI_IFR to synchronize APB and AHB accesses */
+		(void)readl(aq->regs + QSPI_IFR);
+
+		/* Send/Receive data */
+		if (op->data.dir == SPI_MEM_DATA_IN)
+			memcpy_fromio(op->data.buf.in, aq->mem + offset,
+				      op->data.nbytes);
+		else
+			memcpy_toio(aq->mem + offset, op->data.buf.out,
+				    op->data.nbytes);
+
+		/* Release the chip-select */
+		writel(QSPI_CR_LASTXFER, aq->regs + QSPI_CR);
+	}
+
+	/* Poll INSTruction End and Chip Select Rise flags. */
+	imr = QSPI_SR_INSTRE | QSPI_SR_CSR;
+	return readl_poll_timeout(aq->regs + QSPI_SR, sr, (sr & imr) == imr,
+				  1000000);
+}
+
+static int atmel_qspi_set_speed(struct udevice *bus, uint hz)
+{
+	struct atmel_qspi *aq = dev_get_priv(bus);
+	u32 scr, scbr, mask, new_value;
+
+	/* Compute the QSPI baudrate */
+	scbr = DIV_ROUND_UP(aq->bus_clk_rate, hz);
+	if (scbr > 0)
+		scbr--;
+
+	new_value = QSPI_SCR_SCBR(scbr);
+	mask = QSPI_SCR_SCBR_MASK;
+
+	scr = readl(aq->regs + QSPI_SCR);
+	if ((scr & mask) == new_value)
+		return 0;
+
+	scr = (scr & ~mask) | new_value;
+	writel(scr, aq->regs + QSPI_SCR);
+
+	return 0;
+}
+
+static int atmel_qspi_set_mode(struct udevice *bus, uint mode)
+{
+	struct atmel_qspi *aq = dev_get_priv(bus);
+	u32 scr, mask, new_value = 0;
+
+	if (mode & SPI_CPOL)
+		new_value = QSPI_SCR_CPOL;
+	if (mode & SPI_CPHA)
+		new_value = QSPI_SCR_CPHA;
+
+	mask = QSPI_SCR_CPOL | QSPI_SCR_CPHA;
+
+	scr = readl(aq->regs + QSPI_SCR);
+	if ((scr & mask) == new_value)
+		return 0;
+
+	scr = (scr & ~mask) | new_value;
+	writel(scr, aq->regs + QSPI_SCR);
+
+	return 0;
+}
+
+static int atmel_qspi_enable_clk(struct udevice *dev)
+{
+	struct atmel_qspi *aq = dev_get_priv(dev);
+	struct clk pclk, qspick;
+	int ret;
+
+	ret = clk_get_by_name(dev, "pclk", &pclk);
+	if (ret)
+		ret = clk_get_by_index(dev, 0, &pclk);
+
+	if (ret) {
+		dev_err(dev, "Missing QSPI peripheral clock\n");
+		return ret;
+	}
+
+	ret = clk_enable(&pclk);
+	if (ret) {
+		dev_err(dev, "Failed to enable QSPI peripheral clock\n");
+		goto free_pclk;
+	}
+
+	if (aq->caps->has_qspick) {
+		/* Get the QSPI system clock */
+		ret = clk_get_by_name(dev, "qspick", &qspick);
+		if (ret) {
+			dev_err(dev, "Missing QSPI peripheral clock\n");
+			goto free_pclk;
+		}
+
+		ret = clk_enable(&qspick);
+		if (ret)
+			dev_err(dev, "Failed to enable QSPI system clock\n");
+		clk_free(&qspick);
+	}
+
+	aq->bus_clk_rate = clk_get_rate(&pclk);
+	if (!aq->bus_clk_rate)
+		ret = -EINVAL;
+
+free_pclk:
+	clk_free(&pclk);
+
+	return ret;
+}
+
+static void atmel_qspi_init(struct atmel_qspi *aq)
+{
+	/* Reset the QSPI controller */
+	writel(QSPI_CR_SWRST, aq->regs + QSPI_CR);
+
+	/* Set the QSPI controller by default in Serial Memory Mode */
+	writel(QSPI_MR_SMM, aq->regs + QSPI_MR);
+	aq->mr = QSPI_MR_SMM;
+
+	/* Enable the QSPI controller */
+	writel(QSPI_CR_QSPIEN, aq->regs + QSPI_CR);
+}
+
+static int atmel_qspi_probe(struct udevice *dev)
+{
+	struct atmel_qspi *aq = dev_get_priv(dev);
+	struct resource res;
+	int ret;
+
+	aq->caps = (struct atmel_qspi_caps *)dev_get_driver_data(dev);
+	if (!aq->caps) {
+		dev_err(dev, "Could not retrieve QSPI caps\n");
+		return -EINVAL;
+	};
+
+	/* Map the registers */
+	ret = dev_read_resource_byname(dev, "qspi_base", &res);
+	if (ret) {
+		dev_err(dev, "missing registers\n");
+		return ret;
+	}
+
+	aq->regs = devm_ioremap(dev, res.start, resource_size(&res));
+	if (IS_ERR(aq->regs))
+		return PTR_ERR(aq->regs);
+
+	/* Map the AHB memory */
+	ret = dev_read_resource_byname(dev, "qspi_mmap", &res);
+	if (ret) {
+		dev_err(dev, "missing AHB memory\n");
+		return ret;
+	}
+
+	aq->mem = devm_ioremap(dev, res.start, resource_size(&res));
+	if (IS_ERR(aq->mem))
+		return PTR_ERR(aq->mem);
+
+	ret = atmel_qspi_enable_clk(dev);
+	if (ret)
+		return ret;
+
+	atmel_qspi_init(aq);
+
+	return 0;
+}
+
+static const struct spi_controller_mem_ops atmel_qspi_mem_ops = {
+	.supports_op = atmel_qspi_supports_op,
+	.exec_op = atmel_qspi_exec_op,
+};
+
+static const struct dm_spi_ops atmel_qspi_ops = {
+	.set_speed = atmel_qspi_set_speed,
+	.set_mode = atmel_qspi_set_mode,
+	.mem_ops = &atmel_qspi_mem_ops,
+};
+
+static const struct atmel_qspi_caps atmel_sama5d2_qspi_caps = {};
+
+static const struct atmel_qspi_caps atmel_sam9x60_qspi_caps = {
+	.has_qspick = true,
+	.has_ricr = true,
+};
+
+static const struct udevice_id atmel_qspi_ids[] = {
+	{
+		.compatible = "atmel,sama5d2-qspi",
+		.data = (ulong)&atmel_sama5d2_qspi_caps,
+	},
+	{
+		.compatible = "microchip,sam9x60-qspi",
+		.data = (ulong)&atmel_sam9x60_qspi_caps,
+	},
+	{ /* sentinel */ }
+};
+
+U_BOOT_DRIVER(atmel_qspi) = {
+	.name           = "atmel_qspi",
+	.id             = UCLASS_SPI,
+	.of_match       = atmel_qspi_ids,
+	.ops            = &atmel_qspi_ops,
+	.priv_auto_alloc_size = sizeof(struct atmel_qspi),
+	.probe          = atmel_qspi_probe,
+};
-- 
2.9.5

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [U-Boot] [PATCH v5 03/10] configs: sama5d2_xplained: enable qspi controller and flashes
  2019-06-18  8:51 [U-Boot] [PATCH v5 00/10] spi: Add Atmel QuadSPI driver Tudor.Ambarus at microchip.com
  2019-06-18  8:51 ` [U-Boot] [PATCH v5 01/10] dt-bindings: spi: add bindings for Atmel QSPI driver Tudor.Ambarus at microchip.com
  2019-06-18  8:51 ` [U-Boot] [PATCH v5 02/10] spi: Add Atmel QuadSPI driver Tudor.Ambarus at microchip.com
@ 2019-06-18  8:51 ` Tudor.Ambarus at microchip.com
  2019-06-29 14:39   ` Jagan Teki
  2019-06-18  8:51 ` [U-Boot] [PATCH v5 04/10] configs: sama5d27_som1_ek: " Tudor.Ambarus at microchip.com
                   ` (7 subsequent siblings)
  10 siblings, 1 reply; 22+ messages in thread
From: Tudor.Ambarus at microchip.com @ 2019-06-18  8:51 UTC (permalink / raw)
  To: u-boot

From: Tudor Ambarus <tudor.ambarus@microchip.com>

We have a macronix spi-nor flash on sama5d2_xplained RevB and
a sst spi-nor flash on RevC. Select the rest for testing purposes.

Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com>
---
v5: no change
v4: no change
v3: no change
v2: new patch

 configs/sama5d2_xplained_emmc_defconfig     | 5 +++++
 configs/sama5d2_xplained_mmc_defconfig      | 5 +++++
 configs/sama5d2_xplained_spiflash_defconfig | 5 +++++
 3 files changed, 15 insertions(+)

diff --git a/configs/sama5d2_xplained_emmc_defconfig b/configs/sama5d2_xplained_emmc_defconfig
index f643b5a62f39..f244777121b1 100644
--- a/configs/sama5d2_xplained_emmc_defconfig
+++ b/configs/sama5d2_xplained_emmc_defconfig
@@ -65,6 +65,10 @@ CONFIG_DM_SPI_FLASH=y
 CONFIG_SPI_FLASH=y
 CONFIG_SF_DEFAULT_SPEED=30000000
 CONFIG_SPI_FLASH_ATMEL=y
+CONFIG_SPI_FLASH_MACRONIX=y
+CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_FLASH_SST=y
 CONFIG_DM_ETH=y
 CONFIG_MACB=y
 CONFIG_PINCTRL=y
@@ -76,6 +80,7 @@ CONFIG_DEBUG_UART_ANNOUNCE=y
 CONFIG_ATMEL_USART=y
 CONFIG_SPI=y
 CONFIG_DM_SPI=y
+CONFIG_ATMEL_QSPI=y
 CONFIG_TIMER=y
 CONFIG_SPL_TIMER=y
 CONFIG_ATMEL_PIT_TIMER=y
diff --git a/configs/sama5d2_xplained_mmc_defconfig b/configs/sama5d2_xplained_mmc_defconfig
index c25d67bfebb1..633f6c5ad00c 100644
--- a/configs/sama5d2_xplained_mmc_defconfig
+++ b/configs/sama5d2_xplained_mmc_defconfig
@@ -67,6 +67,10 @@ CONFIG_DM_SPI_FLASH=y
 CONFIG_SPI_FLASH=y
 CONFIG_SF_DEFAULT_SPEED=30000000
 CONFIG_SPI_FLASH_ATMEL=y
+CONFIG_SPI_FLASH_MACRONIX=y
+CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_FLASH_SST=y
 CONFIG_DM_ETH=y
 CONFIG_MACB=y
 CONFIG_PINCTRL=y
@@ -78,6 +82,7 @@ CONFIG_DEBUG_UART_ANNOUNCE=y
 CONFIG_ATMEL_USART=y
 CONFIG_SPI=y
 CONFIG_DM_SPI=y
+CONFIG_ATMEL_QSPI=y
 CONFIG_TIMER=y
 CONFIG_SPL_TIMER=y
 CONFIG_ATMEL_PIT_TIMER=y
diff --git a/configs/sama5d2_xplained_spiflash_defconfig b/configs/sama5d2_xplained_spiflash_defconfig
index ac5ae5133c3d..39da86530429 100644
--- a/configs/sama5d2_xplained_spiflash_defconfig
+++ b/configs/sama5d2_xplained_spiflash_defconfig
@@ -64,6 +64,10 @@ CONFIG_DM_SPI_FLASH=y
 CONFIG_SPI_FLASH=y
 CONFIG_SF_DEFAULT_SPEED=30000000
 CONFIG_SPI_FLASH_ATMEL=y
+CONFIG_SPI_FLASH_MACRONIX=y
+CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_FLASH_SST=y
 CONFIG_DM_ETH=y
 CONFIG_MACB=y
 CONFIG_PINCTRL=y
@@ -75,6 +79,7 @@ CONFIG_DEBUG_UART_ANNOUNCE=y
 CONFIG_ATMEL_USART=y
 CONFIG_SPI=y
 CONFIG_DM_SPI=y
+CONFIG_ATMEL_QSPI=y
 CONFIG_TIMER=y
 CONFIG_SPL_TIMER=y
 CONFIG_ATMEL_PIT_TIMER=y
-- 
2.9.5

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [U-Boot] [PATCH v5 04/10] configs: sama5d27_som1_ek: enable qspi controller and flashes
  2019-06-18  8:51 [U-Boot] [PATCH v5 00/10] spi: Add Atmel QuadSPI driver Tudor.Ambarus at microchip.com
                   ` (2 preceding siblings ...)
  2019-06-18  8:51 ` [U-Boot] [PATCH v5 03/10] configs: sama5d2_xplained: enable qspi controller and flashes Tudor.Ambarus at microchip.com
@ 2019-06-18  8:51 ` Tudor.Ambarus at microchip.com
  2019-06-29 14:40   ` Jagan Teki
  2019-06-18  8:51 ` [U-Boot] [PATCH v5 05/10] ARM: dts: at91: sama5d2_xplained: fix QSPI0 node Tudor.Ambarus at microchip.com
                   ` (6 subsequent siblings)
  10 siblings, 1 reply; 22+ messages in thread
From: Tudor.Ambarus at microchip.com @ 2019-06-18  8:51 UTC (permalink / raw)
  To: u-boot

From: Tudor Ambarus <tudor.ambarus@microchip.com>

We use a sst spi-nor flash memory on sama5d27_som1_ek. Select
the others for testing purposes.

Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com>
---
v5: no change
v4: no change
v3: no change
v2: new patch

 configs/sama5d27_som1_ek_mmc1_defconfig | 2 ++
 configs/sama5d27_som1_ek_mmc_defconfig  | 2 ++
 2 files changed, 4 insertions(+)

diff --git a/configs/sama5d27_som1_ek_mmc1_defconfig b/configs/sama5d27_som1_ek_mmc1_defconfig
index 205a4399410f..9b2b78110357 100644
--- a/configs/sama5d27_som1_ek_mmc1_defconfig
+++ b/configs/sama5d27_som1_ek_mmc1_defconfig
@@ -67,6 +67,7 @@ CONFIG_SPI_FLASH=y
 CONFIG_SF_DEFAULT_SPEED=66000000
 CONFIG_SPI_FLASH_ATMEL=y
 CONFIG_SPI_FLASH_MACRONIX=y
+CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SPI_FLASH_SST=y
 CONFIG_DM_ETH=y
@@ -80,6 +81,7 @@ CONFIG_DEBUG_UART_ANNOUNCE=y
 CONFIG_ATMEL_USART=y
 CONFIG_SPI=y
 CONFIG_DM_SPI=y
+CONFIG_ATMEL_QSPI=y
 CONFIG_TIMER=y
 CONFIG_SPL_TIMER=y
 CONFIG_ATMEL_PIT_TIMER=y
diff --git a/configs/sama5d27_som1_ek_mmc_defconfig b/configs/sama5d27_som1_ek_mmc_defconfig
index 0a0780066cd8..e5c551e205d0 100644
--- a/configs/sama5d27_som1_ek_mmc_defconfig
+++ b/configs/sama5d27_som1_ek_mmc_defconfig
@@ -67,6 +67,7 @@ CONFIG_SPI_FLASH=y
 CONFIG_SF_DEFAULT_SPEED=66000000
 CONFIG_SPI_FLASH_ATMEL=y
 CONFIG_SPI_FLASH_MACRONIX=y
+CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SPI_FLASH_SST=y
 CONFIG_DM_ETH=y
@@ -80,6 +81,7 @@ CONFIG_DEBUG_UART_ANNOUNCE=y
 CONFIG_ATMEL_USART=y
 CONFIG_SPI=y
 CONFIG_DM_SPI=y
+CONFIG_ATMEL_QSPI=y
 CONFIG_TIMER=y
 CONFIG_SPL_TIMER=y
 CONFIG_ATMEL_PIT_TIMER=y
-- 
2.9.5

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [U-Boot] [PATCH v5 05/10] ARM: dts: at91: sama5d2_xplained: fix QSPI0 node
  2019-06-18  8:51 [U-Boot] [PATCH v5 00/10] spi: Add Atmel QuadSPI driver Tudor.Ambarus at microchip.com
                   ` (3 preceding siblings ...)
  2019-06-18  8:51 ` [U-Boot] [PATCH v5 04/10] configs: sama5d27_som1_ek: " Tudor.Ambarus at microchip.com
@ 2019-06-18  8:51 ` Tudor.Ambarus at microchip.com
  2019-06-29 14:46   ` Jagan Teki
  2019-06-18  8:52 ` [U-Boot] [PATCH v5 06/10] ARM: at91: sama5: add common environment for QSPI Tudor.Ambarus at microchip.com
                   ` (5 subsequent siblings)
  10 siblings, 1 reply; 22+ messages in thread
From: Tudor.Ambarus at microchip.com @ 2019-06-18  8:51 UTC (permalink / raw)
  To: u-boot

From: Cyrille Pitchen <cyrille.pitchen@microchip.com>

Fix the following:
- use "jedec,spi-nor" binding, we use jedec compatible flashes
- set bus width to 4, we use quad capable flashes
- differentiate bewteen data and clk and cs pins
- drop partions as we don't use them in u-boot.

Signed-off-by: Cyrille Pitchen <cyrille.pitchen@microchip.com>
[tudor.ambarus at microchip.com: use "jedec,spi-nor", edit commit message]
Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com>
---
v5: no change
v4: no change
v3: no change
v2: new patch

 arch/arm/dts/at91-sama5d2_xplained.dts | 36 ++++++++++++++++------------------
 1 file changed, 17 insertions(+), 19 deletions(-)

diff --git a/arch/arm/dts/at91-sama5d2_xplained.dts b/arch/arm/dts/at91-sama5d2_xplained.dts
index c0708feeb7b2..7f0d1696ba3e 100644
--- a/arch/arm/dts/at91-sama5d2_xplained.dts
+++ b/arch/arm/dts/at91-sama5d2_xplained.dts
@@ -79,26 +79,18 @@
 			};
 
 			qspi0: spi at f0020000 {
+				pinctrl-names = "default";
+				pinctrl-0 = <&pinctrl_qspi0_sck_cs_default &pinctrl_qspi0_dat_default>;
 				status = "okay";
+				u-boot,dm-pre-reloc;
 
 				flash at 0 {
-					compatible = "atmel,sama5d2-qspi-flash";
+					compatible = "jedec,spi-nor";
 					reg = <0>;
-					#address-cells = <1>;
-					#size-cells = <1>;
-					pinctrl-names = "default";
-					pinctrl-0 = <&pinctrl_qspi0_default>;
 					spi-max-frequency = <83000000>;
-
-					partition at 00000000 {
-						label = "boot";
-						reg = <0x00000000 0x00c00000>;
-					};
-
-					partition at 00c00000 {
-						label = "rootfs";
-						reg = <0x00c00000 0x00000000>;
-					};
+					spi-rx-bus-width = <4>;
+					spi-tx-bus-width = <4>;
+					u-boot,dm-pre-reloc;
 				};
 			};
 
@@ -208,14 +200,20 @@
 						bias-disable;
 					};
 
-					pinctrl_qspi0_default: qspi0_default {
+					pinctrl_qspi0_sck_cs_default: qspi0_sck_cs_default {
 						pinmux = <PIN_PA22__QSPI0_SCK>,
-							 <PIN_PA23__QSPI0_CS>,
-							 <PIN_PA24__QSPI0_IO0>,
+							 <PIN_PA23__QSPI0_CS>;
+						bias-disable;
+						u-boot,dm-pre-reloc;
+					};
+
+					pinctrl_qspi0_dat_default: qspi0_dat_default {
+						pinmux = <PIN_PA24__QSPI0_IO0>,
 							 <PIN_PA25__QSPI0_IO1>,
 							 <PIN_PA26__QSPI0_IO2>,
 							 <PIN_PA27__QSPI0_IO3>;
-						bias-disable;
+						bias-pull-up;
+						u-boot,dm-pre-reloc;
 					};
 
 					pinctrl_sdmmc0_cmd_dat_default: sdmmc0_cmd_dat_default {
-- 
2.9.5

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [U-Boot] [PATCH v5 06/10] ARM: at91: sama5: add common environment for QSPI
  2019-06-18  8:51 [U-Boot] [PATCH v5 00/10] spi: Add Atmel QuadSPI driver Tudor.Ambarus at microchip.com
                   ` (4 preceding siblings ...)
  2019-06-18  8:51 ` [U-Boot] [PATCH v5 05/10] ARM: dts: at91: sama5d2_xplained: fix QSPI0 node Tudor.Ambarus at microchip.com
@ 2019-06-18  8:52 ` Tudor.Ambarus at microchip.com
  2019-06-18  8:52 ` [U-Boot] [PATCH v5 07/10] configs: sama5d2_xplained: add qspiflash_defconfig Tudor.Ambarus at microchip.com
                   ` (4 subsequent siblings)
  10 siblings, 0 replies; 22+ messages in thread
From: Tudor.Ambarus at microchip.com @ 2019-06-18  8:52 UTC (permalink / raw)
  To: u-boot

From: Cyrille Pitchen <cyrille.pitchen@microchip.com>

Use the same memory layout as we use for the NAND boot on the other boards.

QSPI flashes are present on the following boards:
sama5d2_xplained RevB:  32 Mbyte flash (mx25l3273fm2i-08g)
sama5d2_xplained RevC:   8 Mbyte flash (sst26vf064b-104i/sn)
sama5d27_som1_ek:        8 Mbyte flash (sst26vf064b-104i/sn)
sama5d2_ptc_ek:          8 Mbyte flash (sst26vf064b-104i/sn)

The 8 Mbyte limit is enough to cope with the memory layout used in the NAND
boot. rootfs exceeds the 8 Mbyte limit and will stay in eMMC in the
sama5d2_xplained case. The final scope is to use a single memory layout for
all boot medias.

Signed-off-by: Cyrille Pitchen <cyrille.pitchen@microchip.com>
[tudor.ambarus at microchip.com: change memory layout, add commit message]
Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com>
---
v5: no change
v4: no change
v3: no change
v2: new patch

 include/configs/at91-sama5_common.h | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/include/configs/at91-sama5_common.h b/include/configs/at91-sama5_common.h
index 30c6cd47cac2..fc46540a10ab 100644
--- a/include/configs/at91-sama5_common.h
+++ b/include/configs/at91-sama5_common.h
@@ -72,6 +72,14 @@
 					"sf read 0x21000000 0x60000 0xc000; "	\
 					"sf read 0x22000000 0x6c000 0x394000; "	\
 					"bootz 0x22000000 - 0x21000000"
+#elif CONFIG_QSPI_BOOT
+#define CONFIG_ENV_OFFSET		0x140000
+#define CONFIG_ENV_SIZE			0x20000
+#define CONFIG_ENV_SECT_SIZE		0x1000
+#define CONFIG_BOOTCOMMAND		"sf probe 0; "					\
+					"sf read 0x21000000 0x180000 0x80000; "		\
+					"sf read 0x22000000 0x200000 0x600000; "	\
+					"bootz 0x22000000 - 0x21000000"
 #endif
 
 #endif
-- 
2.9.5

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [U-Boot] [PATCH v5 07/10] configs: sama5d2_xplained: add qspiflash_defconfig
  2019-06-18  8:51 [U-Boot] [PATCH v5 00/10] spi: Add Atmel QuadSPI driver Tudor.Ambarus at microchip.com
                   ` (5 preceding siblings ...)
  2019-06-18  8:52 ` [U-Boot] [PATCH v5 06/10] ARM: at91: sama5: add common environment for QSPI Tudor.Ambarus at microchip.com
@ 2019-06-18  8:52 ` Tudor.Ambarus at microchip.com
  2019-06-29 14:48   ` Jagan Teki
  2019-06-18  8:52 ` [U-Boot] [PATCH v5 08/10] configs: sama5d27_som1_ek: " Tudor.Ambarus at microchip.com
                   ` (3 subsequent siblings)
  10 siblings, 1 reply; 22+ messages in thread
From: Tudor.Ambarus at microchip.com @ 2019-06-18  8:52 UTC (permalink / raw)
  To: u-boot

From: Tudor Ambarus <tudor.ambarus@microchip.com>

Add the default config file of QSPI media. The config is based on
sama5d2_xplained_mmc_defconfig.

Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com>
---
v5: no change
v4: no change
v3: fix the following:
./tools/genboardscfg.py
WARNING: no status info for 'sama5d2_xplained_qspiflash'
WARNING: no maintainers for 'sama5d2_xplained_qspiflash'

v2: new patch

 board/atmel/sama5d2_xplained/MAINTAINERS     |   1 +
 configs/sama5d2_xplained_qspiflash_defconfig | 101 +++++++++++++++++++++++++++
 2 files changed, 102 insertions(+)
 create mode 100644 configs/sama5d2_xplained_qspiflash_defconfig

diff --git a/board/atmel/sama5d2_xplained/MAINTAINERS b/board/atmel/sama5d2_xplained/MAINTAINERS
index 08de5bb6a076..88e327f81cd8 100644
--- a/board/atmel/sama5d2_xplained/MAINTAINERS
+++ b/board/atmel/sama5d2_xplained/MAINTAINERS
@@ -6,3 +6,4 @@ F:	include/configs/sama5d2_xplained.h
 F:	configs/sama5d2_xplained_mmc_defconfig
 F:	configs/sama5d2_xplained_spiflash_defconfig
 F:	configs/sama5d2_xplained_emmc_defconfig
+F:	configs/sama5d2_xplained_qspiflash_defconfig
diff --git a/configs/sama5d2_xplained_qspiflash_defconfig b/configs/sama5d2_xplained_qspiflash_defconfig
new file mode 100644
index 000000000000..1bf04936f748
--- /dev/null
+++ b/configs/sama5d2_xplained_qspiflash_defconfig
@@ -0,0 +1,101 @@
+CONFIG_ARM=y
+CONFIG_ARCH_AT91=y
+CONFIG_SYS_TEXT_BASE=0x26f00000
+CONFIG_TARGET_SAMA5D2_XPLAINED=y
+CONFIG_SPL_GPIO_SUPPORT=y
+CONFIG_SPL_LIBCOMMON_SUPPORT=y
+CONFIG_SPL_LIBGENERIC_SUPPORT=y
+CONFIG_SYS_MALLOC_F_LEN=0x2000
+CONFIG_SPL_MMC_SUPPORT=y
+CONFIG_SPL_SERIAL_SUPPORT=y
+CONFIG_SPL_DRIVERS_MISC_SUPPORT=y
+CONFIG_NR_DRAM_BANKS=1
+CONFIG_SPL=y
+CONFIG_DEBUG_UART_BOARD_INIT=y
+CONFIG_DEBUG_UART_BASE=0xf8020000
+CONFIG_DEBUG_UART_CLOCK=83000000
+CONFIG_SPL_FS_FAT=y
+CONFIG_SPL_LIBDISK_SUPPORT=y
+CONFIG_DEBUG_UART=y
+CONFIG_ENV_VARS_UBOOT_CONFIG=y
+CONFIG_FIT=y
+CONFIG_SYS_EXTRA_OPTIONS="SAMA5D2,SYS_USE_MMC"
+CONFIG_QSPI_BOOT=y
+CONFIG_BOOTDELAY=3
+CONFIG_USE_BOOTARGS=y
+CONFIG_BOOTARGS="console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p1 rw rootwait"
+CONFIG_MISC_INIT_R=y
+# CONFIG_DISPLAY_BOARDINFO is not set
+CONFIG_SPL_TEXT_BASE=0x200000
+CONFIG_SPL_SEPARATE_BSS=y
+CONFIG_HUSH_PARSER=y
+CONFIG_CMD_BOOTZ=y
+# CONFIG_CMD_FLASH is not set
+CONFIG_CMD_I2C=y
+# CONFIG_CMD_LOADS is not set
+CONFIG_CMD_MMC=y
+CONFIG_CMD_SF=y
+CONFIG_CMD_USB=y
+CONFIG_CMD_DHCP=y
+CONFIG_CMD_PING=y
+CONFIG_CMD_EXT4=y
+CONFIG_CMD_FAT=y
+CONFIG_OF_CONTROL=y
+CONFIG_SPL_OF_CONTROL=y
+CONFIG_DEFAULT_DEVICE_TREE="at91-sama5d2_xplained"
+CONFIG_OF_SPL_REMOVE_PROPS="interrupts interrupt-parent dmas dma-names"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
+CONFIG_DM=y
+CONFIG_SPL_DM=y
+CONFIG_SPL_DM_SEQ_ALIAS=y
+CONFIG_CLK=y
+CONFIG_SPL_CLK=y
+CONFIG_CLK_AT91=y
+CONFIG_AT91_UTMI=y
+CONFIG_AT91_H32MX=y
+CONFIG_AT91_GENERIC_CLK=y
+CONFIG_DM_GPIO=y
+CONFIG_ATMEL_PIO4=y
+CONFIG_DM_I2C=y
+CONFIG_SYS_I2C_AT91=y
+CONFIG_I2C_EEPROM=y
+CONFIG_DM_MMC=y
+CONFIG_MMC_SDHCI=y
+CONFIG_MMC_SDHCI_ATMEL=y
+CONFIG_DM_SPI_FLASH=y
+CONFIG_SPI_FLASH=y
+CONFIG_SF_DEFAULT_SPEED=30000000
+CONFIG_SPI_FLASH_ATMEL=y
+CONFIG_SPI_FLASH_MACRONIX=y
+CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_FLASH_SST=y
+CONFIG_DM_ETH=y
+CONFIG_MACB=y
+CONFIG_PINCTRL=y
+CONFIG_SPL_PINCTRL=y
+CONFIG_PINCTRL_AT91PIO4=y
+CONFIG_DM_SERIAL=y
+CONFIG_DEBUG_UART_ATMEL=y
+CONFIG_DEBUG_UART_ANNOUNCE=y
+CONFIG_ATMEL_USART=y
+CONFIG_SPI=y
+CONFIG_DM_SPI=y
+CONFIG_ATMEL_QSPI=y
+CONFIG_TIMER=y
+CONFIG_SPL_TIMER=y
+CONFIG_ATMEL_PIT_TIMER=y
+CONFIG_USB=y
+CONFIG_DM_USB=y
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_STORAGE=y
+CONFIG_USB_GADGET=y
+CONFIG_USB_GADGET_ATMEL_USBA=y
+CONFIG_DM_VIDEO=y
+CONFIG_ATMEL_HLCD=y
+CONFIG_W1=y
+CONFIG_W1_GPIO=y
+CONFIG_W1_EEPROM=y
+CONFIG_W1_EEPROM_DS24XXX=y
+CONFIG_FAT_WRITE=y
+CONFIG_OF_LIBFDT_OVERLAY=y
-- 
2.9.5

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [U-Boot] [PATCH v5 08/10] configs: sama5d27_som1_ek: add qspiflash_defconfig
  2019-06-18  8:51 [U-Boot] [PATCH v5 00/10] spi: Add Atmel QuadSPI driver Tudor.Ambarus at microchip.com
                   ` (6 preceding siblings ...)
  2019-06-18  8:52 ` [U-Boot] [PATCH v5 07/10] configs: sama5d2_xplained: add qspiflash_defconfig Tudor.Ambarus at microchip.com
@ 2019-06-18  8:52 ` Tudor.Ambarus at microchip.com
  2019-06-29 14:49   ` Jagan Teki
  2019-06-18  8:52 ` [U-Boot] [PATCH v5 09/10] configs: sama5d27_som1_ek: qspi: use common memory layout Tudor.Ambarus at microchip.com
                   ` (2 subsequent siblings)
  10 siblings, 1 reply; 22+ messages in thread
From: Tudor.Ambarus at microchip.com @ 2019-06-18  8:52 UTC (permalink / raw)
  To: u-boot

From: Tudor Ambarus <tudor.ambarus@microchip.com>

Add the default config file of QSPI media. The config is based on
sama5d27_som1_ek_mmc_defconfig.

Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com>
---
v5: no change
v4: no change
v3: fix the following:
./tools/genboardscfg.py
WARNING: no status info for 'sama5d27_som1_ek_qspiflash'
WARNING: no maintainers for 'sama5d27_som1_ek_qspiflash'
v2: new patch


 board/atmel/sama5d27_som1_ek/MAINTAINERS     |   1 +
 configs/sama5d27_som1_ek_qspiflash_defconfig | 101 +++++++++++++++++++++++++++
 2 files changed, 102 insertions(+)
 create mode 100644 configs/sama5d27_som1_ek_qspiflash_defconfig

diff --git a/board/atmel/sama5d27_som1_ek/MAINTAINERS b/board/atmel/sama5d27_som1_ek/MAINTAINERS
index 74434e93e952..f2d2f49db304 100644
--- a/board/atmel/sama5d27_som1_ek/MAINTAINERS
+++ b/board/atmel/sama5d27_som1_ek/MAINTAINERS
@@ -5,3 +5,4 @@ F:	board/atmel/sama5d27_som1_ek/
 F:	include/configs/sama5d27_som1_ek.h
 F:	configs/sama5d27_som1_ek_mmc_defconfig
 F:	configs/sama5d27_som1_ek_mmc1_defconfig
+F:	configs/sama5d27_som1_ek_qspiflash_defconfig
diff --git a/configs/sama5d27_som1_ek_qspiflash_defconfig b/configs/sama5d27_som1_ek_qspiflash_defconfig
new file mode 100644
index 000000000000..128b6645f6d9
--- /dev/null
+++ b/configs/sama5d27_som1_ek_qspiflash_defconfig
@@ -0,0 +1,101 @@
+CONFIG_ARM=y
+CONFIG_ARCH_AT91=y
+CONFIG_SYS_TEXT_BASE=0x23f00000
+CONFIG_TARGET_SAMA5D27_SOM1_EK=y
+CONFIG_SPL_GPIO_SUPPORT=y
+CONFIG_SPL_LIBCOMMON_SUPPORT=y
+CONFIG_SPL_LIBGENERIC_SUPPORT=y
+CONFIG_SYS_MALLOC_F_LEN=0x2000
+CONFIG_SPL_MMC_SUPPORT=y
+CONFIG_SPL_SERIAL_SUPPORT=y
+CONFIG_SPL_DRIVERS_MISC_SUPPORT=y
+CONFIG_NR_DRAM_BANKS=1
+CONFIG_SPL=y
+CONFIG_DEBUG_UART_BOARD_INIT=y
+CONFIG_DEBUG_UART_BASE=0xf8020000
+CONFIG_DEBUG_UART_CLOCK=82000000
+CONFIG_SPL_FS_FAT=y
+CONFIG_SPL_LIBDISK_SUPPORT=y
+CONFIG_DEBUG_UART=y
+CONFIG_ENV_VARS_UBOOT_CONFIG=y
+CONFIG_FIT=y
+CONFIG_SYS_EXTRA_OPTIONS="SAMA5D2"
+CONFIG_QSPI_BOOT=y
+CONFIG_BOOTDELAY=3
+CONFIG_USE_BOOTARGS=y
+CONFIG_BOOTARGS="console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rw rootwait"
+CONFIG_MISC_INIT_R=y
+# CONFIG_DISPLAY_BOARDINFO is not set
+CONFIG_SPL_TEXT_BASE=0x200000
+CONFIG_SPL_SEPARATE_BSS=y
+CONFIG_HUSH_PARSER=y
+CONFIG_CMD_BOOTZ=y
+# CONFIG_CMD_FLASH is not set
+CONFIG_CMD_I2C=y
+# CONFIG_CMD_LOADS is not set
+CONFIG_CMD_MMC=y
+CONFIG_CMD_SF=y
+CONFIG_CMD_USB=y
+CONFIG_CMD_DHCP=y
+CONFIG_CMD_PING=y
+CONFIG_CMD_EXT4=y
+CONFIG_CMD_FAT=y
+CONFIG_OF_CONTROL=y
+CONFIG_SPL_OF_CONTROL=y
+CONFIG_DEFAULT_DEVICE_TREE="at91-sama5d27_som1_ek"
+CONFIG_OF_SPL_REMOVE_PROPS="interrupts interrupt-parent dmas dma-names"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
+CONFIG_DM=y
+CONFIG_SPL_DM=y
+CONFIG_SPL_DM_SEQ_ALIAS=y
+CONFIG_CLK=y
+CONFIG_SPL_CLK=y
+CONFIG_CLK_AT91=y
+CONFIG_AT91_UTMI=y
+CONFIG_AT91_H32MX=y
+CONFIG_AT91_GENERIC_CLK=y
+CONFIG_DM_GPIO=y
+CONFIG_ATMEL_PIO4=y
+CONFIG_DM_I2C=y
+CONFIG_SYS_I2C_AT91=y
+CONFIG_I2C_EEPROM=y
+CONFIG_DM_MMC=y
+CONFIG_MMC_SDHCI=y
+CONFIG_MMC_SDHCI_ATMEL=y
+CONFIG_DM_SPI_FLASH=y
+CONFIG_SPI_FLASH=y
+CONFIG_SF_DEFAULT_SPEED=66000000
+CONFIG_SPI_FLASH_ATMEL=y
+CONFIG_SPI_FLASH_MACRONIX=y
+CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_FLASH_SST=y
+CONFIG_DM_ETH=y
+CONFIG_MACB=y
+CONFIG_PINCTRL=y
+CONFIG_SPL_PINCTRL=y
+CONFIG_PINCTRL_AT91PIO4=y
+CONFIG_DM_SERIAL=y
+CONFIG_DEBUG_UART_ATMEL=y
+CONFIG_DEBUG_UART_ANNOUNCE=y
+CONFIG_ATMEL_USART=y
+CONFIG_SPI=y
+CONFIG_DM_SPI=y
+CONFIG_ATMEL_QSPI=y
+CONFIG_TIMER=y
+CONFIG_SPL_TIMER=y
+CONFIG_ATMEL_PIT_TIMER=y
+CONFIG_USB=y
+CONFIG_DM_USB=y
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_STORAGE=y
+CONFIG_USB_GADGET=y
+CONFIG_USB_GADGET_ATMEL_USBA=y
+CONFIG_DM_VIDEO=y
+CONFIG_ATMEL_HLCD=y
+CONFIG_W1=y
+CONFIG_W1_GPIO=y
+CONFIG_W1_EEPROM=y
+CONFIG_W1_EEPROM_DS24XXX=y
+CONFIG_FAT_WRITE=y
+CONFIG_OF_LIBFDT_OVERLAY=y
-- 
2.9.5

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [U-Boot] [PATCH v5 09/10] configs: sama5d27_som1_ek: qspi: use common memory layout
  2019-06-18  8:51 [U-Boot] [PATCH v5 00/10] spi: Add Atmel QuadSPI driver Tudor.Ambarus at microchip.com
                   ` (7 preceding siblings ...)
  2019-06-18  8:52 ` [U-Boot] [PATCH v5 08/10] configs: sama5d27_som1_ek: " Tudor.Ambarus at microchip.com
@ 2019-06-18  8:52 ` Tudor.Ambarus at microchip.com
  2019-06-18  8:52 ` [U-Boot] [PATCH v5 10/10] configs: sama5d2_xplained: add support QSPI flash boot Tudor.Ambarus at microchip.com
  2019-06-25 11:35 ` [U-Boot] [PATCH v5 00/10] spi: Add Atmel QuadSPI driver Eugen.Hristev at microchip.com
  10 siblings, 0 replies; 22+ messages in thread
From: Tudor.Ambarus at microchip.com @ 2019-06-18  8:52 UTC (permalink / raw)
  To: u-boot

From: Tudor Ambarus <tudor.ambarus@microchip.com>

Use the qspi memory layout defined in at91-sama5_common - it aligns
with the 8 Mbyte flash (sst26vf064b-104i/sn) available in sama5d27_som1_ek.

Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com>
---
v5: no change
v4: no change
v3: no change
v2: new patch

 include/configs/sama5d27_som1_ek.h | 7 -------
 1 file changed, 7 deletions(-)

diff --git a/include/configs/sama5d27_som1_ek.h b/include/configs/sama5d27_som1_ek.h
index 5f6979cd77a5..90846c4bfd44 100644
--- a/include/configs/sama5d27_som1_ek.h
+++ b/include/configs/sama5d27_som1_ek.h
@@ -43,13 +43,6 @@
 #endif
 
 #ifdef CONFIG_QSPI_BOOT
-#define CONFIG_ENV_OFFSET		0xb0000
-#define CONFIG_ENV_SIZE			0x10000
-#define CONFIG_ENV_SECT_SIZE		0x10000
-#define CONFIG_BOOTCOMMAND		"sf probe 0; "				\
-					"sf read 0x21000000 0xc0000 0x20000; "	\
-					"sf read 0x22000000 0xe0000 0x400000; "	\
-					"bootz 0x22000000 - 0x21000000"
 #undef CONFIG_BOOTARGS
 #define CONFIG_BOOTARGS \
 	"console=ttyS0,115200 earlyprintk root=/dev/mmcblk0p2 rw rootwait"
-- 
2.9.5

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [U-Boot] [PATCH v5 10/10] configs: sama5d2_xplained: add support QSPI flash boot
  2019-06-18  8:51 [U-Boot] [PATCH v5 00/10] spi: Add Atmel QuadSPI driver Tudor.Ambarus at microchip.com
                   ` (8 preceding siblings ...)
  2019-06-18  8:52 ` [U-Boot] [PATCH v5 09/10] configs: sama5d27_som1_ek: qspi: use common memory layout Tudor.Ambarus at microchip.com
@ 2019-06-18  8:52 ` Tudor.Ambarus at microchip.com
  2019-06-25 11:35 ` [U-Boot] [PATCH v5 00/10] spi: Add Atmel QuadSPI driver Eugen.Hristev at microchip.com
  10 siblings, 0 replies; 22+ messages in thread
From: Tudor.Ambarus at microchip.com @ 2019-06-18  8:52 UTC (permalink / raw)
  To: u-boot

From: Eugen Hristev <eugen.hristev@microchip.com>

The spi-nor flash resides on spi bus 1. Update the CONFIG_ENV_SPI_CS
and CONFIG_BOOTCOMMAND accordingly.

Based on original work by Wenyou Yang.

Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
[tudor.ambarus at microchip.com: amend the commit message.]
Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com>
---
v5: no change
v4: no change
v3: no change
v2: new patch

 include/configs/sama5d2_xplained.h | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/include/configs/sama5d2_xplained.h b/include/configs/sama5d2_xplained.h
index e522740e0c5b..3dea3591275f 100644
--- a/include/configs/sama5d2_xplained.h
+++ b/include/configs/sama5d2_xplained.h
@@ -46,6 +46,17 @@
 
 #endif
 
+#ifdef CONFIG_QSPI_BOOT
+#undef CONFIG_ENV_SPI_BUS
+#undef CONFIG_BOOTCOMMAND
+#define CONFIG_ENV_SPI_BUS	1
+#define CONFIG_BOOTCOMMAND	"sf probe 1:0; "			\
+				"sf read 0x21000000 0x180000 0x80000; "	\
+				"sf read 0x22000000 0x200000 0x600000; "\
+				"bootz 0x22000000 - 0x21000000"
+
+#endif
+
 /* SPL */
 #define CONFIG_SPL_MAX_SIZE		0x10000
 #define CONFIG_SPL_BSS_START_ADDR	0x20000000
-- 
2.9.5

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [U-Boot] [PATCH v5 00/10] spi: Add Atmel QuadSPI driver
  2019-06-18  8:51 [U-Boot] [PATCH v5 00/10] spi: Add Atmel QuadSPI driver Tudor.Ambarus at microchip.com
                   ` (9 preceding siblings ...)
  2019-06-18  8:52 ` [U-Boot] [PATCH v5 10/10] configs: sama5d2_xplained: add support QSPI flash boot Tudor.Ambarus at microchip.com
@ 2019-06-25 11:35 ` Eugen.Hristev at microchip.com
  2019-06-25 15:40   ` Jagan Teki
  10 siblings, 1 reply; 22+ messages in thread
From: Eugen.Hristev at microchip.com @ 2019-06-25 11:35 UTC (permalink / raw)
  To: u-boot

Hello Jagan,

I can only take these patches through u-boot-atmel tree if you 
Ack/Review them.
Otherwise you can consider taking them through u-boot-spi ?

Thanks,
Eugen

On 18.06.2019 11:51, Tudor Ambarus - M18064 wrote:
> From: Tudor Ambarus <tudor.ambarus@microchip.com>
> 
> Backport the driver from linux v5.1-rc5 and adapt it for u-boot.
> Tested on sama5d2_xplained Rev B with mx25l25635e spi-nor flash,
> and on sama5d27_som1_ek with sst26vf064b spi-nor flash.
> 
> V5: drop struct platform_device *pdev; linux leftover, add 2 new
> blank lines
> 
> v4: Update Kconfig description
> 
> v3: fix following config warnings reported by travis:
> ./tools/genboardscfg.py
> WARNING: no status info for 'sama5d2_xplained_qspiflash'
> WARNING: no maintainers for 'sama5d2_xplained_qspiflash'
> WARNING: no status info for 'sama5d27_som1_ek_qspiflash'
> WARNING: no maintainers for 'sama5d27_som1_ek_qspiflash'
> 
> v2: update/add configs and update sama5d2_xplained dts
> 
> Cyrille Pitchen (2):
>    ARM: dts: at91: sama5d2_xplained: fix QSPI0 node
>    ARM: at91: sama5: add common environment for QSPI
> 
> Eugen Hristev (1):
>    configs: sama5d2_xplained: add support QSPI flash boot
> 
> Tudor Ambarus (7):
>    dt-bindings: spi: add bindings for Atmel QSPI driver
>    spi: Add Atmel QuadSPI driver
>    configs: sama5d2_xplained: enable qspi controller and flashes
>    configs: sama5d27_som1_ek: enable qspi controller and flashes
>    configs: sama5d2_xplained: add qspiflash_defconfig
>    configs: sama5d27_som1_ek: add qspiflash_defconfig
>    configs: sama5d27_som1_ek: qspi: use common memory layout
> 
>   arch/arm/dts/at91-sama5d2_xplained.dts         |  36 +-
>   board/atmel/sama5d27_som1_ek/MAINTAINERS       |   1 +
>   board/atmel/sama5d2_xplained/MAINTAINERS       |   1 +
>   configs/sama5d27_som1_ek_mmc1_defconfig        |   2 +
>   configs/sama5d27_som1_ek_mmc_defconfig         |   2 +
>   configs/sama5d27_som1_ek_qspiflash_defconfig   | 101 +++++
>   configs/sama5d2_xplained_emmc_defconfig        |   5 +
>   configs/sama5d2_xplained_mmc_defconfig         |   5 +
>   configs/sama5d2_xplained_qspiflash_defconfig   | 101 +++++
>   configs/sama5d2_xplained_spiflash_defconfig    |   5 +
>   doc/device-tree-bindings/spi/atmel-quadspi.txt |  37 ++
>   drivers/spi/Kconfig                            |   8 +
>   drivers/spi/Makefile                           |   1 +
>   drivers/spi/atmel-quadspi.c                    | 536 +++++++++++++++++++++++++
>   include/configs/at91-sama5_common.h            |   8 +
>   include/configs/sama5d27_som1_ek.h             |   7 -
>   include/configs/sama5d2_xplained.h             |  11 +
>   17 files changed, 841 insertions(+), 26 deletions(-)
>   create mode 100644 configs/sama5d27_som1_ek_qspiflash_defconfig
>   create mode 100644 configs/sama5d2_xplained_qspiflash_defconfig
>   create mode 100644 doc/device-tree-bindings/spi/atmel-quadspi.txt
>   create mode 100644 drivers/spi/atmel-quadspi.c
> 

^ permalink raw reply	[flat|nested] 22+ messages in thread

* [U-Boot] [PATCH v5 00/10] spi: Add Atmel QuadSPI driver
  2019-06-25 11:35 ` [U-Boot] [PATCH v5 00/10] spi: Add Atmel QuadSPI driver Eugen.Hristev at microchip.com
@ 2019-06-25 15:40   ` Jagan Teki
  2019-06-29 14:55     ` Jagan Teki
  0 siblings, 1 reply; 22+ messages in thread
From: Jagan Teki @ 2019-06-25 15:40 UTC (permalink / raw)
  To: u-boot

On Tue, Jun 25, 2019 at 5:05 PM <Eugen.Hristev@microchip.com> wrote:
>
> Hello Jagan,
>
> I can only take these patches through u-boot-atmel tree if you
> Ack/Review them.
> Otherwise you can consider taking them through u-boot-spi ?

I would need a look on the new version, once ie fine I can pick via
spi tree. if possible please assign me on the patchwork, thanks.

^ permalink raw reply	[flat|nested] 22+ messages in thread

* [U-Boot] [PATCH v5 02/10] spi: Add Atmel QuadSPI driver
  2019-06-18  8:51 ` [U-Boot] [PATCH v5 02/10] spi: Add Atmel QuadSPI driver Tudor.Ambarus at microchip.com
@ 2019-06-29 14:38   ` Jagan Teki
  0 siblings, 0 replies; 22+ messages in thread
From: Jagan Teki @ 2019-06-29 14:38 UTC (permalink / raw)
  To: u-boot

On Tue, Jun 18, 2019 at 2:21 PM <Tudor.Ambarus@microchip.com> wrote:
>
> From: Tudor Ambarus <tudor.ambarus@microchip.com>
>
> Backport the driver from linux v5.1-rc5 and adapt it for u-boot.
> Tested on sama5d2_xplained Rev B with mx25l25635e spi-nor flash.
>
> Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com>
> ---

Reviewed-by: Jagan Teki <jagan@amarulasolutions.com>

^ permalink raw reply	[flat|nested] 22+ messages in thread

* [U-Boot] [PATCH v5 03/10] configs: sama5d2_xplained: enable qspi controller and flashes
  2019-06-18  8:51 ` [U-Boot] [PATCH v5 03/10] configs: sama5d2_xplained: enable qspi controller and flashes Tudor.Ambarus at microchip.com
@ 2019-06-29 14:39   ` Jagan Teki
  0 siblings, 0 replies; 22+ messages in thread
From: Jagan Teki @ 2019-06-29 14:39 UTC (permalink / raw)
  To: u-boot

On Tue, Jun 18, 2019 at 2:21 PM <Tudor.Ambarus@microchip.com> wrote:
>
> From: Tudor Ambarus <tudor.ambarus@microchip.com>
>
> We have a macronix spi-nor flash on sama5d2_xplained RevB and
> a sst spi-nor flash on RevC. Select the rest for testing purposes.
>
> Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com>
> ---
> v5: no change
> v4: no change
> v3: no change
> v2: new patch
>
>  configs/sama5d2_xplained_emmc_defconfig     | 5 +++++
>  configs/sama5d2_xplained_mmc_defconfig      | 5 +++++
>  configs/sama5d2_xplained_spiflash_defconfig | 5 +++++
>  3 files changed, 15 insertions(+)

Reviewed-by: Jagan Teki <jagan@amarulasolutions.com>

^ permalink raw reply	[flat|nested] 22+ messages in thread

* [U-Boot] [PATCH v5 04/10] configs: sama5d27_som1_ek: enable qspi controller and flashes
  2019-06-18  8:51 ` [U-Boot] [PATCH v5 04/10] configs: sama5d27_som1_ek: " Tudor.Ambarus at microchip.com
@ 2019-06-29 14:40   ` Jagan Teki
  0 siblings, 0 replies; 22+ messages in thread
From: Jagan Teki @ 2019-06-29 14:40 UTC (permalink / raw)
  To: u-boot

On Tue, Jun 18, 2019 at 2:22 PM <Tudor.Ambarus@microchip.com> wrote:
>
> From: Tudor Ambarus <tudor.ambarus@microchip.com>
>
> We use a sst spi-nor flash memory on sama5d27_som1_ek. Select
> the others for testing purposes.
>
> Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com>
> ---
> v5: no change
> v4: no change
> v3: no change
> v2: new patch
>
>  configs/sama5d27_som1_ek_mmc1_defconfig | 2 ++
>  configs/sama5d27_som1_ek_mmc_defconfig  | 2 ++
>  2 files changed, 4 insertions(+)

Reviewed-by: Jagan Teki <jagan@amarulasolutions.com>

^ permalink raw reply	[flat|nested] 22+ messages in thread

* [U-Boot] [PATCH v5 05/10] ARM: dts: at91: sama5d2_xplained: fix QSPI0 node
  2019-06-18  8:51 ` [U-Boot] [PATCH v5 05/10] ARM: dts: at91: sama5d2_xplained: fix QSPI0 node Tudor.Ambarus at microchip.com
@ 2019-06-29 14:46   ` Jagan Teki
  0 siblings, 0 replies; 22+ messages in thread
From: Jagan Teki @ 2019-06-29 14:46 UTC (permalink / raw)
  To: u-boot

On Tue, Jun 18, 2019 at 2:22 PM <Tudor.Ambarus@microchip.com> wrote:
>
> From: Cyrille Pitchen <cyrille.pitchen@microchip.com>
>
> Fix the following:
> - use "jedec,spi-nor" binding, we use jedec compatible flashes
> - set bus width to 4, we use quad capable flashes
> - differentiate bewteen data and clk and cs pins
> - drop partions as we don't use them in u-boot.
>
> Signed-off-by: Cyrille Pitchen <cyrille.pitchen@microchip.com>
> [tudor.ambarus at microchip.com: use "jedec,spi-nor", edit commit message]
> Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com>
> ---
> v5: no change
> v4: no change
> v3: no change
> v2: new patch
>
>  arch/arm/dts/at91-sama5d2_xplained.dts | 36 ++++++++++++++++------------------
>  1 file changed, 17 insertions(+), 19 deletions(-)
>
> diff --git a/arch/arm/dts/at91-sama5d2_xplained.dts b/arch/arm/dts/at91-sama5d2_xplained.dts
> index c0708feeb7b2..7f0d1696ba3e 100644
> --- a/arch/arm/dts/at91-sama5d2_xplained.dts
> +++ b/arch/arm/dts/at91-sama5d2_xplained.dts
> @@ -79,26 +79,18 @@
>                         };
>
>                         qspi0: spi at f0020000 {
> +                               pinctrl-names = "default";
> +                               pinctrl-0 = <&pinctrl_qspi0_sck_cs_default &pinctrl_qspi0_dat_default>;
>                                 status = "okay";
> +                               u-boot,dm-pre-reloc;

I always believe, keeping period sync of DTS changes from linux rather
than minimal or required changes when it needed. it is up to Eugen to
make decision here.

Jagan.

^ permalink raw reply	[flat|nested] 22+ messages in thread

* [U-Boot] [PATCH v5 07/10] configs: sama5d2_xplained: add qspiflash_defconfig
  2019-06-18  8:52 ` [U-Boot] [PATCH v5 07/10] configs: sama5d2_xplained: add qspiflash_defconfig Tudor.Ambarus at microchip.com
@ 2019-06-29 14:48   ` Jagan Teki
  0 siblings, 0 replies; 22+ messages in thread
From: Jagan Teki @ 2019-06-29 14:48 UTC (permalink / raw)
  To: u-boot

On Tue, Jun 18, 2019 at 2:22 PM <Tudor.Ambarus@microchip.com> wrote:
>
> From: Tudor Ambarus <tudor.ambarus@microchip.com>
>
> Add the default config file of QSPI media. The config is based on
> sama5d2_xplained_mmc_defconfig.
>
> Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com>
> ---

On Tue, Jun 18, 2019 at 2:22 PM <Tudor.Ambarus@microchip.com> wrote:
>
> From: Tudor Ambarus <tudor.ambarus@microchip.com>
>
> We use a sst spi-nor flash memory on sama5d27_som1_ek. Select
> the others for testing purposes.
>
> Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com>
> ---
> v5: no change
> v4: no change
> v3: no change
> v2: new patch
>
>  configs/sama5d27_som1_ek_mmc1_defconfig | 2 ++
>  configs/sama5d27_som1_ek_mmc_defconfig  | 2 ++
>  2 files changed, 4 insertions(+)

Reviewed-by: Jagan Teki <jagan@amarulasolutions.com>

^ permalink raw reply	[flat|nested] 22+ messages in thread

* [U-Boot] [PATCH v5 08/10] configs: sama5d27_som1_ek: add qspiflash_defconfig
  2019-06-18  8:52 ` [U-Boot] [PATCH v5 08/10] configs: sama5d27_som1_ek: " Tudor.Ambarus at microchip.com
@ 2019-06-29 14:49   ` Jagan Teki
  0 siblings, 0 replies; 22+ messages in thread
From: Jagan Teki @ 2019-06-29 14:49 UTC (permalink / raw)
  To: u-boot

On Tue, Jun 18, 2019 at 2:22 PM <Tudor.Ambarus@microchip.com> wrote:
>
> From: Tudor Ambarus <tudor.ambarus@microchip.com>
>
> Add the default config file of QSPI media. The config is based on
> sama5d27_som1_ek_mmc_defconfig.
>
> Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com>
> ---
> v5: no change
> v4: no change
> v3: fix the following:
> ./tools/genboardscfg.py
> WARNING: no status info for 'sama5d27_som1_ek_qspiflash'
> WARNING: no maintainers for 'sama5d27_som1_ek_qspiflash'
> v2: new patch

Reviewed-by: Jagan Teki <jagan@amarulasolutions.com>

^ permalink raw reply	[flat|nested] 22+ messages in thread

* [U-Boot] [PATCH v5 01/10] dt-bindings: spi: add bindings for Atmel QSPI driver
  2019-06-18  8:51 ` [U-Boot] [PATCH v5 01/10] dt-bindings: spi: add bindings for Atmel QSPI driver Tudor.Ambarus at microchip.com
@ 2019-06-29 14:53   ` Jagan Teki
  0 siblings, 0 replies; 22+ messages in thread
From: Jagan Teki @ 2019-06-29 14:53 UTC (permalink / raw)
  To: u-boot

On Tue, Jun 18, 2019 at 2:21 PM <Tudor.Ambarus@microchip.com> wrote:
>
> From: Tudor Ambarus <tudor.ambarus@microchip.com>
>
> Describe the DT bindings for the driver of the Atmel QSPI
> controller. Taken form linux v5.1-rc5.
>
> Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com>
> ---
> v5: no change
> v4: no change
> v3: no change
> v2: no change
>
>  doc/device-tree-bindings/spi/atmel-quadspi.txt | 37 ++++++++++++++++++++++++++
>  1 file changed, 37 insertions(+)
>  create mode 100644 doc/device-tree-bindings/spi/atmel-quadspi.txt

We are no particular about bindings, atleast I don't based on my
experience since the driver bindings remain the same like Linux. So I
would recommend this to keep drop from the series or may be pick it up
if we have any conclusive evidence for the usage.

^ permalink raw reply	[flat|nested] 22+ messages in thread

* [U-Boot] [PATCH v5 00/10] spi: Add Atmel QuadSPI driver
  2019-06-25 15:40   ` Jagan Teki
@ 2019-06-29 14:55     ` Jagan Teki
  2019-07-08 11:40       ` Eugen.Hristev at microchip.com
  0 siblings, 1 reply; 22+ messages in thread
From: Jagan Teki @ 2019-06-29 14:55 UTC (permalink / raw)
  To: u-boot

Hi Eugen,

On Tue, Jun 25, 2019 at 9:10 PM Jagan Teki <jagan@amarulasolutions.com> wrote:
>
> On Tue, Jun 25, 2019 at 5:05 PM <Eugen.Hristev@microchip.com> wrote:
> >
> > Hello Jagan,
> >
> > I can only take these patches through u-boot-atmel tree if you
> > Ack/Review them.
> > Otherwise you can consider taking them through u-boot-spi ?
>
> I would need a look on the new version, once ie fine I can pick via
> spi tree. if possible please assign me on the patchwork, thanks.

I have marked my comments,  you can make the decision accordingly. By
the way I assigned them to you as well, thanks.

Jagan.

^ permalink raw reply	[flat|nested] 22+ messages in thread

* [U-Boot] [PATCH v5 00/10] spi: Add Atmel QuadSPI driver
  2019-06-29 14:55     ` Jagan Teki
@ 2019-07-08 11:40       ` Eugen.Hristev at microchip.com
  0 siblings, 0 replies; 22+ messages in thread
From: Eugen.Hristev at microchip.com @ 2019-07-08 11:40 UTC (permalink / raw)
  To: u-boot



On 29.06.2019 17:55, Jagan Teki wrote:

> Hi Eugen,
> 
> On Tue, Jun 25, 2019 at 9:10 PM Jagan Teki <jagan@amarulasolutions.com> wrote:
>>
>> On Tue, Jun 25, 2019 at 5:05 PM <Eugen.Hristev@microchip.com> wrote:
>>>
>>> Hello Jagan,
>>>
>>> I can only take these patches through u-boot-atmel tree if you
>>> Ack/Review them.
>>> Otherwise you can consider taking them through u-boot-spi ?
>>
>> I would need a look on the new version, once ie fine I can pick via
>> spi tree. if possible please assign me on the patchwork, thanks.
> 
> I have marked my comments,  you can make the decision accordingly. By
> the way I assigned them to you as well, thanks.
> 
> Jagan.
> 

Applied patches 2-10 to u-boot-atmel/next
Dropped patch 1 (dt-bindings) as advised by Jagan.
Will be queued for 2019.10 merge window.

Thanks Tudor and Jagan !

Eugen

^ permalink raw reply	[flat|nested] 22+ messages in thread

end of thread, other threads:[~2019-07-08 11:40 UTC | newest]

Thread overview: 22+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-06-18  8:51 [U-Boot] [PATCH v5 00/10] spi: Add Atmel QuadSPI driver Tudor.Ambarus at microchip.com
2019-06-18  8:51 ` [U-Boot] [PATCH v5 01/10] dt-bindings: spi: add bindings for Atmel QSPI driver Tudor.Ambarus at microchip.com
2019-06-29 14:53   ` Jagan Teki
2019-06-18  8:51 ` [U-Boot] [PATCH v5 02/10] spi: Add Atmel QuadSPI driver Tudor.Ambarus at microchip.com
2019-06-29 14:38   ` Jagan Teki
2019-06-18  8:51 ` [U-Boot] [PATCH v5 03/10] configs: sama5d2_xplained: enable qspi controller and flashes Tudor.Ambarus at microchip.com
2019-06-29 14:39   ` Jagan Teki
2019-06-18  8:51 ` [U-Boot] [PATCH v5 04/10] configs: sama5d27_som1_ek: " Tudor.Ambarus at microchip.com
2019-06-29 14:40   ` Jagan Teki
2019-06-18  8:51 ` [U-Boot] [PATCH v5 05/10] ARM: dts: at91: sama5d2_xplained: fix QSPI0 node Tudor.Ambarus at microchip.com
2019-06-29 14:46   ` Jagan Teki
2019-06-18  8:52 ` [U-Boot] [PATCH v5 06/10] ARM: at91: sama5: add common environment for QSPI Tudor.Ambarus at microchip.com
2019-06-18  8:52 ` [U-Boot] [PATCH v5 07/10] configs: sama5d2_xplained: add qspiflash_defconfig Tudor.Ambarus at microchip.com
2019-06-29 14:48   ` Jagan Teki
2019-06-18  8:52 ` [U-Boot] [PATCH v5 08/10] configs: sama5d27_som1_ek: " Tudor.Ambarus at microchip.com
2019-06-29 14:49   ` Jagan Teki
2019-06-18  8:52 ` [U-Boot] [PATCH v5 09/10] configs: sama5d27_som1_ek: qspi: use common memory layout Tudor.Ambarus at microchip.com
2019-06-18  8:52 ` [U-Boot] [PATCH v5 10/10] configs: sama5d2_xplained: add support QSPI flash boot Tudor.Ambarus at microchip.com
2019-06-25 11:35 ` [U-Boot] [PATCH v5 00/10] spi: Add Atmel QuadSPI driver Eugen.Hristev at microchip.com
2019-06-25 15:40   ` Jagan Teki
2019-06-29 14:55     ` Jagan Teki
2019-07-08 11:40       ` Eugen.Hristev at microchip.com

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox