All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH 0/4] Support for board Calao USB A9263
@ 2010-06-02 16:04 Thomas Petazzoni
  2010-06-02 16:04 ` [U-Boot] [PATCH 1/4] Atmel Dataflash: convert to C struct accessors Thomas Petazzoni
                   ` (4 more replies)
  0 siblings, 5 replies; 16+ messages in thread
From: Thomas Petazzoni @ 2010-06-02 16:04 UTC (permalink / raw)
  To: u-boot

Hello,

This patchset implements the support for the Calao USB A9263 board
(patch 4). The first three patches are preliminary work, to convert
the Atmel Dataflash SPI driver to the new C struct accessors
introduced a few months ago for AT91 support in U-Boot.

Thanks,

Thomas

Thomas Petazzoni (4):
  Atmel Dataflash: convert to C struct accessors
  at91_spi: remove register offsets
  at91sam9263: add new style definition for SPI0_BASE
  Support for Calao USB A9263 board based on AT91SAM9263 CPU

 MAINTAINERS                                  |    4 +
 MAKEALL                                      |    1 +
 Makefile                                     |    3 +
 arch/arm/include/asm/arch-at91/at91_spi.h    |  152 +++++++++------------
 arch/arm/include/asm/arch-at91/at91sam9263.h |    1 +
 board/calao/usb-a9263/Makefile               |   58 ++++++++
 board/calao/usb-a9263/config.mk              |   24 ++++
 board/calao/usb-a9263/partition.c            |   38 ++++++
 board/calao/usb-a9263/usb-a9263.c            |  186 ++++++++++++++++++++++++++
 drivers/spi/atmel_dataflash_spi.c            |   73 ++++++-----
 include/configs/usb-a9263.h                  |  182 +++++++++++++++++++++++++
 11 files changed, 598 insertions(+), 124 deletions(-)
 create mode 100644 board/calao/usb-a9263/Makefile
 create mode 100644 board/calao/usb-a9263/config.mk
 create mode 100644 board/calao/usb-a9263/partition.c
 create mode 100644 board/calao/usb-a9263/usb-a9263.c
 create mode 100644 include/configs/usb-a9263.h

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

* [U-Boot] [PATCH 1/4] Atmel Dataflash: convert to C struct accessors
  2010-06-02 16:04 [U-Boot] [PATCH 0/4] Support for board Calao USB A9263 Thomas Petazzoni
@ 2010-06-02 16:04 ` Thomas Petazzoni
  2010-06-02 16:04 ` [U-Boot] [PATCH 2/4] at91_spi: remove register offsets Thomas Petazzoni
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 16+ messages in thread
From: Thomas Petazzoni @ 2010-06-02 16:04 UTC (permalink / raw)
  To: u-boot

Instead of using the old-style base + offset accessors, use the new
at91 C struct accessors.

The removal of #ifdef CONFIG_AT91_LEGACY allows to keep the definition
of register values, needed to program the SPI.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 arch/arm/include/asm/arch-at91/at91_spi.h |    4 --
 drivers/spi/atmel_dataflash_spi.c         |   73 +++++++++++++++--------------
 2 files changed, 38 insertions(+), 39 deletions(-)

diff --git a/arch/arm/include/asm/arch-at91/at91_spi.h b/arch/arm/include/asm/arch-at91/at91_spi.h
index c520e89..73e23cf 100644
--- a/arch/arm/include/asm/arch-at91/at91_spi.h
+++ b/arch/arm/include/asm/arch-at91/at91_spi.h
@@ -33,8 +33,6 @@ typedef struct at91_spi {
 	at91_pdc_t	pdc;
 } at91_spi_t;
 
-#ifdef CONFIG_AT91_LEGACY
-
 #define AT91_SPI_CR			0x00		/* Control Register */
 #define		AT91_SPI_SPIEN		(1 <<  0)		/* SPI Enable */
 #define		AT91_SPI_SPIDIS		(1 <<  1)		/* SPI Disable */
@@ -121,6 +119,4 @@ typedef struct at91_spi {
 
 #define AT91_SPI_PTSR		0x0124			/* PDC Transfer Status Register */
 
-#endif /* CONFIG_AT91_LEGACY */
-
 #endif
diff --git a/drivers/spi/atmel_dataflash_spi.c b/drivers/spi/atmel_dataflash_spi.c
index 4a5c4aa..c6609a0 100644
--- a/drivers/spi/atmel_dataflash_spi.c
+++ b/drivers/spi/atmel_dataflash_spi.c
@@ -2,6 +2,9 @@
  * Driver for ATMEL DataFlash support
  * Author : Hamid Ikdoumi (Atmel)
  *
+ * Conversion to C struct SoC accessors by Thomas Petazzoni
+ * <thomas.petazzoni@free-electrons.com>.
+ *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License as
  * published by the Free Software Foundation; either version 2 of
@@ -20,10 +23,6 @@
  */
 
 #include <common.h>
-#ifndef CONFIG_AT91_LEGACY
-#define CONFIG_AT91_LEGACY
-#warning Please update to use C structur SoC access !
-#endif
 #include <asm/arch/hardware.h>
 #include <asm/arch/clk.h>
 #include <asm/arch/gpio.h>
@@ -40,19 +39,21 @@
 
 void AT91F_SpiInit(void)
 {
+	at91_spi_t *spi = (at91_spi_t *) AT91_SPI0_BASE;
+
 	/* Reset the SPI */
-	writel(AT91_SPI_SWRST, AT91_BASE_SPI + AT91_SPI_CR);
+	writel(AT91_SPI_SWRST, &spi->cr);
 
 	/* Configure SPI in Master Mode with No CS selected !!! */
 	writel(AT91_SPI_MSTR | AT91_SPI_MODFDIS | AT91_SPI_PCS,
-	       AT91_BASE_SPI + AT91_SPI_MR);
+	       &spi->mr);
 
 	/* Configure CS0 */
 	writel(AT91_SPI_NCPHA |
 	       (AT91_SPI_DLYBS & DATAFLASH_TCSS) |
 	       (AT91_SPI_DLYBCT & DATAFLASH_TCHS) |
 	       ((get_mck_clk_rate() / AT91_SPI_CLK) << 8),
-	       AT91_BASE_SPI + AT91_SPI_CSR(0));
+	       &spi->csr[0]);
 
 #ifdef CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS1
 	/* Configure CS1 */
@@ -60,7 +61,7 @@ void AT91F_SpiInit(void)
 	       (AT91_SPI_DLYBS & DATAFLASH_TCSS) |
 	       (AT91_SPI_DLYBCT & DATAFLASH_TCHS) |
 	       ((get_mck_clk_rate() / AT91_SPI_CLK) << 8),
-	       AT91_BASE_SPI + AT91_SPI_CSR(1));
+	       &spi->csr[1]);
 #endif
 #ifdef CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS2
 	/* Configure CS2 */
@@ -68,7 +69,7 @@ void AT91F_SpiInit(void)
 	       (AT91_SPI_DLYBS & DATAFLASH_TCSS) |
 	       (AT91_SPI_DLYBCT & DATAFLASH_TCHS) |
 	       ((get_mck_clk_rate() / AT91_SPI_CLK) << 8),
-	       AT91_BASE_SPI + AT91_SPI_CSR(2));
+	       &spi->csr[2]);
 #endif
 #ifdef CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS3
 	/* Configure CS3 */
@@ -76,95 +77,97 @@ void AT91F_SpiInit(void)
 	       (AT91_SPI_DLYBS & DATAFLASH_TCSS) |
 	       (AT91_SPI_DLYBCT & DATAFLASH_TCHS) |
 	       ((get_mck_clk_rate() / AT91_SPI_CLK) << 8),
-	       AT91_BASE_SPI + AT91_SPI_CSR(3));
+	       &spi->csr[3]);
 #endif
 
 	/* SPI_Enable */
-	writel(AT91_SPI_SPIEN, AT91_BASE_SPI + AT91_SPI_CR);
+	writel(AT91_SPI_SPIEN, &spi->cr);
 
-	while (!(readl(AT91_BASE_SPI + AT91_SPI_SR) & AT91_SPI_SPIENS));
+	while (!(readl(&spi->sr) & AT91_SPI_SPIENS));
 
 	/*
 	 * Add tempo to get SPI in a safe state.
 	 * Should not be needed for new silicon (Rev B)
 	 */
 	udelay(500000);
-	readl(AT91_BASE_SPI + AT91_SPI_SR);
-	readl(AT91_BASE_SPI + AT91_SPI_RDR);
+	readl(&spi->sr);
+	readl(&spi->rdr);
 
 }
 
 void AT91F_SpiEnable(int cs)
 {
+	at91_spi_t *spi = (at91_spi_t *) AT91_SPI0_BASE;
 	unsigned long mode;
 
 	switch (cs) {
 	case 0:	/* Configure SPI CS0 for Serial DataFlash AT45DBxx */
-		mode = readl(AT91_BASE_SPI + AT91_SPI_MR);
+		mode = readl(&spi->mr);
 		mode &= 0xFFF0FFFF;
 		writel(mode | ((AT91_SPI_PCS0_DATAFLASH_CARD<<16) & AT91_SPI_PCS),
-		       AT91_BASE_SPI + AT91_SPI_MR);
+		       &spi->mr);
 		break;
 	case 1:	/* Configure SPI CS1 for Serial DataFlash AT45DBxx */
-		mode = readl(AT91_BASE_SPI + AT91_SPI_MR);
+		mode = readl(&spi->mr);
 		mode &= 0xFFF0FFFF;
 		writel(mode | ((AT91_SPI_PCS1_DATAFLASH_CARD<<16) & AT91_SPI_PCS),
-		       AT91_BASE_SPI + AT91_SPI_MR);
+		       &spi->mr);
 		break;
 	case 2:	/* Configure SPI CS2 for Serial DataFlash AT45DBxx */
-		mode = readl(AT91_BASE_SPI + AT91_SPI_MR);
+		mode = readl(&spi->mr);
 		mode &= 0xFFF0FFFF;
 		writel(mode | ((AT91_SPI_PCS2_DATAFLASH_CARD<<16) & AT91_SPI_PCS),
-		       AT91_BASE_SPI + AT91_SPI_MR);
+		       &spi->mr);
 		break;
 	case 3:
-		mode = readl(AT91_BASE_SPI + AT91_SPI_MR);
+		mode = readl(&spi->mr);
 		mode &= 0xFFF0FFFF;
 		writel(mode | ((AT91_SPI_PCS3_DATAFLASH_CARD<<16) & AT91_SPI_PCS),
-		       AT91_BASE_SPI + AT91_SPI_MR);
+		       &spi->mr);
 		break;
 	}
 
 	/* SPI_Enable */
-	writel(AT91_SPI_SPIEN, AT91_BASE_SPI + AT91_SPI_CR);
+	writel(AT91_SPI_SPIEN, &spi->cr);
 }
 
 unsigned int AT91F_SpiWrite1(AT91PS_DataflashDesc pDesc);
 
 unsigned int AT91F_SpiWrite(AT91PS_DataflashDesc pDesc)
 {
+	at91_spi_t *spi = (at91_spi_t *) AT91_SPI0_BASE;
 	unsigned int timeout;
 
 	pDesc->state = BUSY;
 
-	writel(AT91_SPI_TXTDIS + AT91_SPI_RXTDIS, AT91_BASE_SPI + AT91_SPI_PTCR);
+	writel(AT91_SPI_TXTDIS + AT91_SPI_RXTDIS, &spi->pdc.ptcr);
 
 	/* Initialize the Transmit and Receive Pointer */
-	writel((unsigned int)pDesc->rx_cmd_pt, AT91_BASE_SPI + AT91_SPI_RPR);
-	writel((unsigned int)pDesc->tx_cmd_pt, AT91_BASE_SPI + AT91_SPI_TPR);
+	writel((unsigned int)pDesc->rx_cmd_pt, &spi->pdc.rpr);
+	writel((unsigned int)pDesc->tx_cmd_pt, &spi->pdc.tpr);
 
 	/* Intialize the Transmit and Receive Counters */
-	writel(pDesc->rx_cmd_size, AT91_BASE_SPI + AT91_SPI_RCR);
-	writel(pDesc->tx_cmd_size, AT91_BASE_SPI + AT91_SPI_TCR);
+	writel(pDesc->rx_cmd_size, &spi->pdc.rcr);
+	writel(pDesc->tx_cmd_size, &spi->pdc.tcr);
 
 	if (pDesc->tx_data_size != 0) {
 		/* Initialize the Next Transmit and Next Receive Pointer */
-		writel((unsigned int)pDesc->rx_data_pt, AT91_BASE_SPI + AT91_SPI_RNPR);
-		writel((unsigned int)pDesc->tx_data_pt, AT91_BASE_SPI + AT91_SPI_TNPR);
+		writel((unsigned int)pDesc->rx_data_pt, &spi->pdc.pnpr);
+		writel((unsigned int)pDesc->tx_data_pt, &spi->pdc.tnpr);
 
 		/* Intialize the Next Transmit and Next Receive Counters */
-		writel(pDesc->rx_data_size, AT91_BASE_SPI + AT91_SPI_RNCR);
-		writel(pDesc->tx_data_size, AT91_BASE_SPI + AT91_SPI_TNCR);
+		writel(pDesc->rx_data_size, &spi->pdc.pncr);
+		writel(pDesc->tx_data_size, &spi->pdc.tncr);
 	}
 
 	/* arm simple, non interrupt dependent timer */
 	reset_timer_masked();
 	timeout = 0;
 
-	writel(AT91_SPI_TXTEN + AT91_SPI_RXTEN, AT91_BASE_SPI + AT91_SPI_PTCR);
-	while (!(readl(AT91_BASE_SPI + AT91_SPI_SR) & AT91_SPI_RXBUFF) &&
+	writel(AT91_SPI_TXTEN + AT91_SPI_RXTEN, &spi->pdc.ptcr);
+	while (!(readl(&spi->sr) & AT91_SPI_RXBUFF) &&
 		((timeout = get_timer_masked()) < CONFIG_SYS_SPI_WRITE_TOUT));
-	writel(AT91_SPI_TXTDIS + AT91_SPI_RXTDIS, AT91_BASE_SPI + AT91_SPI_PTCR);
+	writel(AT91_SPI_TXTDIS + AT91_SPI_RXTDIS, &spi->pdc.ptcr);
 	pDesc->state = IDLE;
 
 	if (timeout >= CONFIG_SYS_SPI_WRITE_TOUT) {
-- 
1.7.0.4

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

* [U-Boot] [PATCH 2/4] at91_spi: remove register offsets
  2010-06-02 16:04 [U-Boot] [PATCH 0/4] Support for board Calao USB A9263 Thomas Petazzoni
  2010-06-02 16:04 ` [U-Boot] [PATCH 1/4] Atmel Dataflash: convert to C struct accessors Thomas Petazzoni
@ 2010-06-02 16:04 ` Thomas Petazzoni
  2010-06-02 16:04 ` [U-Boot] [PATCH 3/4] at91sam9263: add new style definition for SPI0_BASE Thomas Petazzoni
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 16+ messages in thread
From: Thomas Petazzoni @ 2010-06-02 16:04 UTC (permalink / raw)
  To: u-boot

Since all users of at91_spi have been converted to C struct accessors,
the register offsets definitions are no longer needed.

We take this opportunity to do a little bit of reformatting for the
register bits definitions.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 arch/arm/include/asm/arch-at91/at91_spi.h |  148 ++++++++++++-----------------
 1 files changed, 63 insertions(+), 85 deletions(-)

diff --git a/arch/arm/include/asm/arch-at91/at91_spi.h b/arch/arm/include/asm/arch-at91/at91_spi.h
index 73e23cf..e86212d 100644
--- a/arch/arm/include/asm/arch-at91/at91_spi.h
+++ b/arch/arm/include/asm/arch-at91/at91_spi.h
@@ -33,90 +33,68 @@ typedef struct at91_spi {
 	at91_pdc_t	pdc;
 } at91_spi_t;
 
-#define AT91_SPI_CR			0x00		/* Control Register */
-#define		AT91_SPI_SPIEN		(1 <<  0)		/* SPI Enable */
-#define		AT91_SPI_SPIDIS		(1 <<  1)		/* SPI Disable */
-#define		AT91_SPI_SWRST		(1 <<  7)		/* SPI Software Reset */
-#define		AT91_SPI_LASTXFER	(1 << 24)		/* Last Transfer [SAM9261 only] */
-
-#define AT91_SPI_MR			0x04		/* Mode Register */
-#define		AT91_SPI_MSTR		(1    <<  0)		/* Master/Slave Mode */
-#define		AT91_SPI_PS		(1    <<  1)		/* Peripheral Select */
-#define			AT91_SPI_PS_FIXED	(0 << 1)
-#define			AT91_SPI_PS_VARIABLE	(1 << 1)
-#define		AT91_SPI_PCSDEC		(1    <<  2)		/* Chip Select Decode */
-#define		AT91_SPI_DIV32		(1    <<  3)		/* Clock Selection [AT91RM9200 only] */
-#define		AT91_SPI_MODFDIS	(1    <<  4)		/* Mode Fault Detection */
-#define		AT91_SPI_LLB		(1    <<  7)		/* Local Loopback Enable */
-#define		AT91_SPI_PCS		(0xf  << 16)		/* Peripheral Chip Select */
-#define		AT91_SPI_DLYBCS		(0xff << 24)		/* Delay Between Chip Selects */
-
-#define AT91_SPI_RDR		0x08			/* Receive Data Register */
-#define		AT91_SPI_RD		(0xffff <<  0)		/* Receive Data */
-#define		AT91_SPI_PCS		(0xf	<< 16)		/* Peripheral Chip Select */
-
-#define AT91_SPI_TDR		0x0c			/* Transmit Data Register */
-#define		AT91_SPI_TD		(0xffff <<  0)		/* Transmit Data */
-#define		AT91_SPI_PCS		(0xf	<< 16)		/* Peripheral Chip Select */
-#define		AT91_SPI_LASTXFER	(1	<< 24)		/* Last Transfer [SAM9261 only] */
-
-#define AT91_SPI_SR		0x10			/* Status Register */
-#define		AT91_SPI_RDRF		(1 <<  0)		/* Receive Data Register Full */
-#define		AT91_SPI_TDRE		(1 <<  1)		/* Transmit Data Register Full */
-#define		AT91_SPI_MODF		(1 <<  2)		/* Mode Fault Error */
-#define		AT91_SPI_OVRES		(1 <<  3)		/* Overrun Error Status */
-#define		AT91_SPI_ENDRX		(1 <<  4)		/* End of RX buffer */
-#define		AT91_SPI_ENDTX		(1 <<  5)		/* End of TX buffer */
-#define		AT91_SPI_RXBUFF		(1 <<  6)		/* RX Buffer Full */
-#define		AT91_SPI_TXBUFE		(1 <<  7)		/* TX Buffer Empty */
-#define		AT91_SPI_NSSR		(1 <<  8)		/* NSS Rising [SAM9261 only] */
-#define		AT91_SPI_TXEMPTY	(1 <<  9)		/* Transmission Register Empty [SAM9261 only] */
-#define		AT91_SPI_SPIENS		(1 << 16)		/* SPI Enable Status */
-
-#define AT91_SPI_IER		0x14			/* Interrupt Enable Register */
-#define AT91_SPI_IDR		0x18			/* Interrupt Disable Register */
-#define AT91_SPI_IMR		0x1c			/* Interrupt Mask Register */
-
-#define AT91_SPI_CSR(n)		(0x30 + ((n) * 4))	/* Chip Select Registers 0-3 */
-#define		AT91_SPI_CPOL		(1    <<  0)		/* Clock Polarity */
-#define		AT91_SPI_NCPHA		(1    <<  1)		/* Clock Phase */
-#define		AT91_SPI_CSAAT		(1    <<  3)		/* Chip Select Active After Transfer [SAM9261 only] */
-#define		AT91_SPI_BITS		(0xf  <<  4)		/* Bits Per Transfer */
-#define			AT91_SPI_BITS_8		(0 << 4)
-#define			AT91_SPI_BITS_9		(1 << 4)
-#define			AT91_SPI_BITS_10	(2 << 4)
-#define			AT91_SPI_BITS_11	(3 << 4)
-#define			AT91_SPI_BITS_12	(4 << 4)
-#define			AT91_SPI_BITS_13	(5 << 4)
-#define			AT91_SPI_BITS_14	(6 << 4)
-#define			AT91_SPI_BITS_15	(7 << 4)
-#define			AT91_SPI_BITS_16	(8 << 4)
-#define		AT91_SPI_SCBR		(0xff <<  8)		/* Serial Clock Baud Rate */
-#define		AT91_SPI_DLYBS		(0xff << 16)		/* Delay before SPCK */
-#define		AT91_SPI_DLYBCT		(0xff << 24)		/* Delay between Consecutive Transfers */
-
-#define AT91_SPI_RPR		0x0100			/* Receive Pointer Register */
-
-#define AT91_SPI_RCR		0x0104			/* Receive Counter Register */
-
-#define AT91_SPI_TPR		0x0108			/* Transmit Pointer Register */
-
-#define AT91_SPI_TCR		0x010c			/* Transmit Counter Register */
-
-#define AT91_SPI_RNPR		0x0110			/* Receive Next Pointer Register */
-
-#define AT91_SPI_RNCR		0x0114			/* Receive Next Counter Register */
-
-#define AT91_SPI_TNPR		0x0118			/* Transmit Next Pointer Register */
-
-#define AT91_SPI_TNCR		0x011c			/* Transmit Next Counter Register */
-
-#define AT91_SPI_PTCR		0x0120			/* PDC Transfer Control Register */
-#define		AT91_SPI_RXTEN		(0x1 << 0)		/* Receiver Transfer Enable */
-#define		AT91_SPI_RXTDIS		(0x1 << 1)		/* Receiver Transfer Disable */
-#define		AT91_SPI_TXTEN		(0x1 << 8)		/* Transmitter Transfer Enable */
-#define		AT91_SPI_TXTDIS		(0x1 << 9)		/* Transmitter Transfer Disable */
-
-#define AT91_SPI_PTSR		0x0124			/* PDC Transfer Status Register */
+/* Control Register bits */
+#define AT91_SPI_SPIEN        (1 <<  0)      /* SPI Enable */
+#define AT91_SPI_SPIDIS       (1 <<  1)      /* SPI Disable */
+#define AT91_SPI_SWRST        (1 <<  7)      /* SPI Software Reset */
+#define AT91_SPI_LASTXFER     (1 << 24)      /* Last Transfer [SAM9261 only] */
+
+/* Mode Register bits */
+#define AT91_SPI_MSTR         (1    <<  0)   /* Master/Slave Mode */
+#define AT91_SPI_PS           (1    <<  1)   /* Peripheral Select */
+#define  AT91_SPI_PS_FIXED        (0 << 1)
+#define  AT91_SPI_PS_VARIABLE     (1 << 1)
+#define AT91_SPI_PCSDEC       (1    <<  2)   /* Chip Select Decode */
+#define AT91_SPI_DIV32        (1    <<  3)   /* Clock Selection [AT91RM9200 only] */
+#define AT91_SPI_MODFDIS      (1    <<  4)   /* Mode Fault Detection */
+#define AT91_SPI_LLB          (1    <<  7)   /* Local Loopback Enable */
+#define AT91_SPI_PCS          (0xf  << 16)   /* Peripheral Chip Select */
+#define AT91_SPI_DLYBCS       (0xff << 24)   /* Delay Between Chip Selects */
+
+/* Receive data register bits */
+#define AT91_SPI_RD           (0xffff <<  0) /* Receive Data */
+#define AT91_SPI_PCS          (0xf    << 16) /* Peripheral Chip Select */
+
+/* Transmit Data Register bits */
+#define AT91_SPI_TD           (0xffff <<  0) /* Transmit Data */
+#define AT91_SPI_PCS          (0xf    << 16) /* Peripheral Chip Select */
+#define AT91_SPI_LASTXFER     (1      << 24) /* Last Transfer [SAM9261 only] */
+
+/* Status Register bits */
+#define AT91_SPI_RDRF         (1 <<  0)      /* Receive Data Register Full */
+#define AT91_SPI_TDRE         (1 <<  1)      /* Transmit Data Register Full */
+#define AT91_SPI_MODF         (1 <<  2)      /* Mode Fault Error */
+#define AT91_SPI_OVRES        (1 <<  3)      /* Overrun Error Status */
+#define AT91_SPI_ENDRX        (1 <<  4)      /* End of RX buffer */
+#define AT91_SPI_ENDTX        (1 <<  5)      /* End of TX buffer */
+#define AT91_SPI_RXBUFF       (1 <<  6)      /* RX Buffer Full */
+#define AT91_SPI_TXBUFE       (1 <<  7)      /* TX Buffer Empty */
+#define AT91_SPI_NSSR         (1 <<  8)      /* NSS Rising [SAM9261 only] */
+#define AT91_SPI_TXEMPTY      (1 <<  9)      /* Transmission Register Empty [SAM9261 only] */
+#define AT91_SPI_SPIENS       (1 << 16)      /* SPI Enable Status */
+
+/* Chip Select Registers bits */
+#define AT91_SPI_CPOL         (1    <<  0)   /* Clock Polarity */
+#define AT91_SPI_NCPHA        (1    <<  1)   /* Clock Phase */
+#define AT91_SPI_CSAAT        (1    <<  3)   /* Chip Select Active After Transfer [SAM9261 only] */
+#define AT91_SPI_BITS         (0xf  <<  4)   /* Bits Per Transfer */
+#define  AT91_SPI_BITS_8          (0 << 4)
+#define  AT91_SPI_BITS_9          (1 << 4)
+#define  AT91_SPI_BITS_10         (2 << 4)
+#define  AT91_SPI_BITS_11         (3 << 4)
+#define  AT91_SPI_BITS_12         (4 << 4)
+#define  AT91_SPI_BITS_13         (5 << 4)
+#define  AT91_SPI_BITS_14         (6 << 4)
+#define  AT91_SPI_BITS_15         (7 << 4)
+#define  AT91_SPI_BITS_16         (8 << 4)
+#define AT91_SPI_SCBR         (0xff <<  8)   /* Serial Clock Baud Rate */
+#define AT91_SPI_DLYBS        (0xff << 16)   /* Delay before SPCK */
+#define AT91_SPI_DLYBCT       (0xff << 24)   /* Delay between Consecutive Transfers */
+
+/* PDC Transfer Control Register bits */
+#define AT91_SPI_RXTEN        (0x1 << 0)     /* Receiver Transfer Enable */
+#define AT91_SPI_RXTDIS       (0x1 << 1)     /* Receiver Transfer Disable */
+#define AT91_SPI_TXTEN        (0x1 << 8)     /* Transmitter Transfer Enable */
+#define AT91_SPI_TXTDIS       (0x1 << 9)     /* Transmitter Transfer Disable */
 
 #endif
-- 
1.7.0.4

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

* [U-Boot] [PATCH 3/4] at91sam9263: add new style definition for SPI0_BASE
  2010-06-02 16:04 [U-Boot] [PATCH 0/4] Support for board Calao USB A9263 Thomas Petazzoni
  2010-06-02 16:04 ` [U-Boot] [PATCH 1/4] Atmel Dataflash: convert to C struct accessors Thomas Petazzoni
  2010-06-02 16:04 ` [U-Boot] [PATCH 2/4] at91_spi: remove register offsets Thomas Petazzoni
@ 2010-06-02 16:04 ` Thomas Petazzoni
  2010-06-02 16:04 ` [U-Boot] [PATCH 4/4] Support for Calao USB A9263 board based on AT91SAM9263 CPU Thomas Petazzoni
  2010-06-07 12:40 ` [U-Boot] [PATCH 0/4] Support for board Calao USB A9263 Tom Rix
  4 siblings, 0 replies; 16+ messages in thread
From: Thomas Petazzoni @ 2010-06-02 16:04 UTC (permalink / raw)
  To: u-boot

The new C struct accessors define new constants for the base address
of the peripherals. Let's add the one needed for SPI0 on AT91SAM9263.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 arch/arm/include/asm/arch-at91/at91sam9263.h |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/arch/arm/include/asm/arch-at91/at91sam9263.h b/arch/arm/include/asm/arch-at91/at91sam9263.h
index 4ada1ce..d6c8982 100644
--- a/arch/arm/include/asm/arch-at91/at91sam9263.h
+++ b/arch/arm/include/asm/arch-at91/at91sam9263.h
@@ -47,6 +47,7 @@
 #define AT91SAM9263_ID_IRQ0	30	/* Advanced Interrupt Controller (IRQ0) */
 #define AT91SAM9263_ID_IRQ1	31	/* Advanced Interrupt Controller (IRQ1) */
 
+#define AT91_SPI0_BASE		0xfffa4000
 #define AT91_EMAC_BASE		0xfffbc000
 #define AT91_ECC0_BASE		0xffffe000
 #define AT91_SDRAMC0_BASE	0xffffe200
-- 
1.7.0.4

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

* [U-Boot] [PATCH 4/4] Support for Calao USB A9263 board based on AT91SAM9263 CPU
  2010-06-02 16:04 [U-Boot] [PATCH 0/4] Support for board Calao USB A9263 Thomas Petazzoni
                   ` (2 preceding siblings ...)
  2010-06-02 16:04 ` [U-Boot] [PATCH 3/4] at91sam9263: add new style definition for SPI0_BASE Thomas Petazzoni
@ 2010-06-02 16:04 ` Thomas Petazzoni
  2010-06-07 12:40 ` [U-Boot] [PATCH 0/4] Support for board Calao USB A9263 Tom Rix
  4 siblings, 0 replies; 16+ messages in thread
From: Thomas Petazzoni @ 2010-06-02 16:04 UTC (permalink / raw)
  To: u-boot

The Calao USB A9263 board is a board manufactured and sold by Calao
Systems <http://www.calao-systems.com>. Its components are very
similar to the AT91SAM9263EK board, so its configuration is based
on the configuration of this board. There are however some
differences: different clocks, no LCD, etc.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Albin Tonnerre <albin.tonnerre@free-electrons.com>
---
 MAINTAINERS                       |    4 +
 MAKEALL                           |    1 +
 Makefile                          |    3 +
 board/calao/usb-a9263/Makefile    |   58 ++++++++++++
 board/calao/usb-a9263/config.mk   |   24 +++++
 board/calao/usb-a9263/partition.c |   38 ++++++++
 board/calao/usb-a9263/usb-a9263.c |  186 +++++++++++++++++++++++++++++++++++++
 include/configs/usb-a9263.h       |  182 ++++++++++++++++++++++++++++++++++++
 8 files changed, 496 insertions(+), 0 deletions(-)
 create mode 100644 board/calao/usb-a9263/Makefile
 create mode 100644 board/calao/usb-a9263/config.mk
 create mode 100644 board/calao/usb-a9263/partition.c
 create mode 100644 board/calao/usb-a9263/usb-a9263.c
 create mode 100644 include/configs/usb-a9263.h

diff --git a/MAINTAINERS b/MAINTAINERS
index 7a13d28..39c04af 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -700,6 +700,10 @@ Peter Pearse <peter.pearse@arm.com>
 	versatile	ARM926EJ-S
 	versatile	ARM926EJ-S
 
+Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+
+	usb-a9263	ARM926EJS (AT91SAM9263 SoC)
+
 Dave Peverley <dpeverley@mpc-data.co.uk>
 
 	omap730p2	ARM926EJS
diff --git a/MAKEALL b/MAKEALL
index 2527352..685c497 100755
--- a/MAKEALL
+++ b/MAKEALL
@@ -685,6 +685,7 @@ LIST_at91="			\
 	SBC35_A9G20		\
 	TNY_A9260		\
 	TNY_A9G20		\
+	usb9263			\
 "
 
 #########################################################################
diff --git a/Makefile b/Makefile
index c26e491..648e71c 100644
--- a/Makefile
+++ b/Makefile
@@ -2890,6 +2890,9 @@ TNY_A9260_config	:	unconfig
 	@echo "#define CONFIG_$(@:_config=) 1" >$(obj)include/config.h
 	@$(MKCONFIG) -a tny_a9260 arm arm926ejs tny_a9260 calao at91
 
+usb_a9263_config	:	unconfig
+	$(MKCONFIG) -a usb-a9263 arm arm926ejs usb-a9263 calao at91
+
 ########################################################################
 ## ARM Integrator boards - see doc/README-integrator for more info.
 integratorap_config	\
diff --git a/board/calao/usb-a9263/Makefile b/board/calao/usb-a9263/Makefile
new file mode 100644
index 0000000..ec79872
--- /dev/null
+++ b/board/calao/usb-a9263/Makefile
@@ -0,0 +1,58 @@
+#
+# (C) Copyright 2003-2008
+# Wolfgang Denk, DENX Software Engineering, wd at denx.de.
+#
+# (C) Copyright 2008
+# Stelian Pop <stelian.pop@leadtechdesign.com>
+# Lead Tech Design <www.leadtechdesign.com>
+#
+# (C) Copyright 2009
+# Thomas Petazzoni, Free Electrons, <thomas.petazzoni@free-electrons.com>
+#
+# See file CREDITS for list of people who contributed to this
+# project.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+# MA 02111-1307 USA
+#
+
+include $(TOPDIR)/config.mk
+
+LIB	= $(obj)lib$(BOARD).a
+
+COBJS-y += usb-a9263.o
+COBJS-$(CONFIG_HAS_DATAFLASH) += partition.o
+
+SRCS	:= $(SOBJS:.o=.S) $(COBJS-y:.o=.c)
+OBJS	:= $(addprefix $(obj),$(COBJS-y))
+SOBJS	:= $(addprefix $(obj),$(SOBJS))
+
+$(LIB):	$(obj).depend $(OBJS) $(SOBJS)
+	$(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
+
+clean:
+	rm -f $(SOBJS) $(OBJS)
+
+distclean:	clean
+	rm -f $(LIB) core *.bak $(obj).depend
+
+#########################################################################
+
+# defines $(obj).depend target
+include $(SRCTREE)/rules.mk
+
+sinclude $(obj).depend
+
+#########################################################################
diff --git a/board/calao/usb-a9263/config.mk b/board/calao/usb-a9263/config.mk
new file mode 100644
index 0000000..2724a7d
--- /dev/null
+++ b/board/calao/usb-a9263/config.mk
@@ -0,0 +1,24 @@
+#
+# (C) Copyright 2009
+# Thomas Petazzoni, Free Electrons, <thomas.petazzoni@free-electrons.com>
+#
+# See file CREDITS for list of people who contributed to this
+# project.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+# MA 02111-1307 USA
+#
+
+TEXT_BASE = 0x23f00000
diff --git a/board/calao/usb-a9263/partition.c b/board/calao/usb-a9263/partition.c
new file mode 100644
index 0000000..614ef0d
--- /dev/null
+++ b/board/calao/usb-a9263/partition.c
@@ -0,0 +1,38 @@
+/*
+ * (C) Copyright 2008-2009
+ * Ulf Samuelsson <ulf@atmel.com>
+ * Thomas Petazzoni, Free Electrons, <thomas.petazzoni@free-electrons.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ */
+#include <common.h>
+#include <config.h>
+#include <asm/hardware.h>
+#include <dataflash.h>
+
+AT91S_DATAFLASH_INFO dataflash_info[CONFIG_SYS_MAX_DATAFLASH_BANKS];
+
+struct dataflash_addr cs[CONFIG_SYS_MAX_DATAFLASH_BANKS] = {
+	{CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0, 0},	/* Logical adress, CS */
+};
+
+/*define the area offsets*/
+dataflash_protect_t area_list[NB_DATAFLASH_AREA] = {
+	{0x00000000, 0x00001FFF, FLAG_PROTECT_SET,   0, "Bootstrap"},
+	{0x00002000, 0x00003FFF, FLAG_PROTECT_CLEAR, 0, "Environment"},
+	{0x00004000, 0xFFFFFFFF, FLAG_PROTECT_SET,   0, "U-Boot"},
+};
diff --git a/board/calao/usb-a9263/usb-a9263.c b/board/calao/usb-a9263/usb-a9263.c
new file mode 100644
index 0000000..65de748
--- /dev/null
+++ b/board/calao/usb-a9263/usb-a9263.c
@@ -0,0 +1,186 @@
+/*
+ * (C) Copyright 2007-2009
+ * Stelian Pop <stelian.pop@leadtechdesign.com>
+ * Lead Tech Design <www.leadtechdesign.com>
+ * Thomas Petazzoni, Free Electrons, <thomas.petazzoni@free-electrons.com>
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <common.h>
+#include <asm/sizes.h>
+#include <asm/arch/at91sam9263.h>
+#include <asm/arch/at91sam9263_matrix.h>
+#include <asm/arch/at91sam9_smc.h>
+#include <asm/arch/at91_common.h>
+#include <asm/arch/at91_pmc.h>
+#include <asm/arch/at91_rstc.h>
+#include <asm/arch/at91_matrix.h>
+#include <asm/arch/at91_pio.h>
+#include <asm/arch/clk.h>
+#include <asm/arch/gpio.h>
+#include <asm/arch/hardware.h>
+#if defined(CONFIG_MACB)
+#include <net.h>
+#endif
+#include <netdev.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+/* ------------------------------------------------------------------------- */
+/*
+ * Miscelaneous platform dependent initialisations
+ */
+
+#ifdef CONFIG_CMD_NAND
+static void usb_a9263_nand_hw_init(void)
+{
+	unsigned long csa;
+	at91_smc_t 	*smc 	= (at91_smc_t *) AT91_SMC0_BASE;
+	at91_matrix_t 	*matrix = (at91_matrix_t *) AT91_MATRIX_BASE;
+	at91_pmc_t	*pmc	= (at91_pmc_t *) AT91_PMC_BASE;
+
+	/* Enable CS3 */
+	csa = readl(&matrix->csa[0]) | AT91_MATRIX_CSA_EBI_CS3A;
+	writel(csa, &matrix->csa[0]);
+
+	/* Configure SMC CS3 for NAND/SmartMedia */
+	writel(AT91_SMC_SETUP_NWE(1) | AT91_SMC_SETUP_NCS_WR(0) |
+		AT91_SMC_SETUP_NRD(1) | AT91_SMC_SETUP_NCS_RD(0),
+		&smc->cs[3].setup);
+
+	writel(AT91_SMC_PULSE_NWE(3) | AT91_SMC_PULSE_NCS_WR(3) |
+		AT91_SMC_PULSE_NRD(3) | AT91_SMC_PULSE_NCS_RD(3),
+		&smc->cs[3].pulse);
+
+	writel(AT91_SMC_CYCLE_NWE(5) | AT91_SMC_CYCLE_NRD(5),
+		&smc->cs[3].cycle);
+
+	writel(AT91_SMC_MODE_RM_NRD | AT91_SMC_MODE_WM_NWE |
+		AT91_SMC_MODE_EXNW_DISABLE |
+#ifdef CONFIG_SYS_NAND_DBW_16
+		       AT91_SMC_MODE_DBW_16 |
+#else /* CONFIG_SYS_NAND_DBW_8 */
+		       AT91_SMC_MODE_DBW_8 |
+#endif
+		       AT91_SMC_MODE_TDF_CYCLE(2),
+		&smc->cs[3].mode);
+
+	writel(1 << AT91SAM9263_ID_PIOA | 1 << AT91SAM9263_ID_PIOCDE,
+		&pmc->pcer);
+
+	/* Configure RDY/BSY */
+	at91_set_pio_input(CONFIG_SYS_NAND_READY_PIN, 1);
+
+	/* Enable NandFlash */
+	at91_set_pio_output(CONFIG_SYS_NAND_ENABLE_PIN, 1);
+}
+#endif
+
+#ifdef CONFIG_MACB
+static void usb_a9263_macb_hw_init(void)
+{
+	unsigned long    erstl;
+	at91_pmc_t	*pmc	= (at91_pmc_t *) AT91_PMC_BASE;
+	at91_pio_t	*pio	= (at91_pio_t *) AT91_PIO_BASE;
+	at91_rstc_t	*rstc	= (at91_rstc_t *) AT91_RSTC_BASE;
+
+	/* Enable clock */
+	writel(1 << AT91SAM9263_ID_EMAC, &pmc->pcer);
+
+	/*
+	 * Disable pull-up on:
+	 *	RXDV (PC25) => PHY normal mode (not Test mode)
+	 * 	ERX0 (PE25) => PHY ADDR0
+	 *	ERX1 (PE26) => PHY ADDR1 => PHYADDR = 0x0
+	 *
+	 * PHY has internal pull-down
+	 */
+	writel(1 << 25, &pio->pioc.pudr);
+	writel((1 << 25) | (1 <<26), &pio->pioe.pudr);
+
+	erstl = readl(&rstc->mr) & AT91_RSTC_MR_ERSTL_MASK;
+
+	/* Need to reset PHY -> 500ms reset */
+	writel(AT91_RSTC_KEY | AT91_RSTC_MR_ERSTL(0x0D) |
+	       AT91_RSTC_MR_URSTEN, &rstc->mr);
+
+	writel(AT91_RSTC_KEY | AT91_RSTC_CR_EXTRST, &rstc->cr);
+
+	/* Wait for end hardware reset */
+	while (!(readl(&rstc->sr) & AT91_RSTC_SR_NRSTL))
+		;
+
+	/* Restore NRST value */
+	writel(AT91_RSTC_KEY | erstl | AT91_RSTC_MR_URSTEN, &rstc->mr);
+
+	/* Re-enable pull-up */
+	writel(1 << 25, &pio->pioc.puer);
+	writel((1 << 25) | (1 <<26), &pio->pioe.puer);
+
+	at91_macb_hw_init();
+}
+#endif
+
+int board_init(void)
+{
+	/* Enable Ctrlc */
+	console_init_f();
+
+	/* arch number of USB-A9263-Board */
+	gd->bd->bi_arch_number = MACH_TYPE_USB_A9263;
+	/* adress of boot parameters */
+	gd->bd->bi_boot_params = PHYS_SDRAM + 0x100;
+
+	at91_serial_hw_init();
+#ifdef CONFIG_CMD_NAND
+	usb_a9263_nand_hw_init();
+#endif
+#ifdef CONFIG_HAS_DATAFLASH
+	at91_set_pio_output(AT91_PIO_PORTE, 20, 1);	/* select spi0 clock */
+	at91_spi0_hw_init(1 << 0);
+#endif
+#ifdef CONFIG_MACB
+	usb_a9263_macb_hw_init();
+#endif
+#ifdef CONFIG_USB_OHCI_NEW
+	at91_uhp_hw_init();
+#endif
+	return 0;
+}
+
+int dram_init(void)
+{
+	gd->bd->bi_dram[0].start = PHYS_SDRAM;
+	gd->bd->bi_dram[0].size = get_ram_size((long*) PHYS_SDRAM,
+					       PHYS_SDRAM_SIZE);
+	if (gd->bd->bi_dram[0].size != PHYS_SDRAM_SIZE)
+	  return -1;
+
+	return 0;
+}
+
+int board_eth_init(bd_t *bis)
+{
+	int rc = 0;
+#ifdef CONFIG_MACB
+	rc = macb_eth_initialize(0, (void *) AT91_EMAC_BASE, 0x00);
+#endif
+	return rc;
+}
diff --git a/include/configs/usb-a9263.h b/include/configs/usb-a9263.h
new file mode 100644
index 0000000..3c851ba
--- /dev/null
+++ b/include/configs/usb-a9263.h
@@ -0,0 +1,182 @@
+/*
+ * (C) Copyright 2007-2009
+ * Stelian Pop <stelian.pop@leadtechdesign.com>
+ * Lead Tech Design <www.leadtechdesign.com>
+ * Thomas Petazzoni, Free Electrons, <thomas.petazzoni@free-electrons.com>
+ *
+ * Configuration settings for the Calao USB-A9263 board.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#ifndef __CONFIG_H
+#define __CONFIG_H
+
+/* ARM asynchronous clock */
+#define AT91_MAIN_CLOCK		12000000	/* 12 MHz crystal */
+#define CONFIG_SYS_HZ		1000
+
+#define CONFIG_ARM926EJS	 1	/* This is an ARM926EJS Core	*/
+#define CONFIG_AT91SAM9263	 1	/* It's an Atmel AT91SAM9263 SoC*/
+#define CONFIG_CALAO_USB_A9263	 1	/* on an Calao USB A 9263 Board	*/
+#define CONFIG_ARCH_CPU_INIT
+#undef CONFIG_USE_IRQ			/* we don't need IRQ/FIQ stuff	*/
+
+#define CONFIG_CMDLINE_TAG	 1	/* enable passing of ATAGs	*/
+#define CONFIG_SETUP_MEMORY_TAGS 1
+#define CONFIG_INITRD_TAG	 1
+
+#define CONFIG_SKIP_LOWLEVEL_INIT
+#define CONFIG_SKIP_RELOCATE_UBOOT
+
+/*
+ * Hardware drivers
+ */
+#define CONFIG_AT91_GPIO        1
+#define CONFIG_ATMEL_USART	1
+#undef CONFIG_USART0
+#undef CONFIG_USART1
+#undef CONFIG_USART2
+#define CONFIG_USART3		1	/* USART 3 is DBGU */
+
+/* LCD */
+#undef CONFIG_LCD
+
+#define CONFIG_BOOTDELAY	3
+
+/*
+ * BOOTP options
+ */
+#define CONFIG_BOOTP_BOOTFILESIZE	1
+#define CONFIG_BOOTP_BOOTPATH		1
+#define CONFIG_BOOTP_GATEWAY		1
+#define CONFIG_BOOTP_HOSTNAME		1
+
+/*
+ * Command line configuration.
+ */
+#include <config_cmd_default.h>
+#undef CONFIG_CMD_BDI
+#undef CONFIG_CMD_FPGA
+#undef CONFIG_CMD_IMI
+#undef CONFIG_CMD_IMLS
+#undef CONFIG_CMD_LOADS
+#undef CONFIG_CMD_SOURCE
+
+#define CONFIG_CMD_PING		1
+#define CONFIG_CMD_DHCP		1
+#define CONFIG_CMD_NAND		1
+#define CONFIG_CMD_USB		1
+
+/* SDRAM */
+#define CONFIG_NR_DRAM_BANKS		1
+#define PHYS_SDRAM			0x20000000
+#define PHYS_SDRAM_SIZE			0x04000000
+
+/* DataFlash */
+#define CONFIG_ATMEL_DATAFLASH_SPI
+#define CONFIG_HAS_DATAFLASH		        1
+#define CONFIG_SYS_SPI_WRITE_TOUT		(5*CONFIG_SYS_HZ)
+#define CONFIG_SYS_MAX_DATAFLASH_BANKS		1
+#define CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0	0xC0000000
+#define AT91_SPI_CLK			        8000000
+#define DATAFLASH_TCSS			        (0x1c << 16)
+#define DATAFLASH_TCHS			        (0x1 << 24)
+
+/* no NOR flash */
+#define CONFIG_SYS_NO_FLASH			1
+
+/* NAND flash */
+#ifdef CONFIG_CMD_NAND
+#define CONFIG_NAND_ATMEL
+#define CONFIG_SYS_MAX_NAND_DEVICE		1
+#define CONFIG_SYS_NAND_BASE			0x40000000
+#define CONFIG_SYS_NAND_DBW_8			1
+/* our ALE is AD21 */
+#define CONFIG_SYS_NAND_MASK_ALE		(1 << 21)
+/* our CLE is AD22 */
+#define CONFIG_SYS_NAND_MASK_CLE		(1 << 22)
+#define CONFIG_SYS_NAND_ENABLE_PIN		AT91_PIO_PORTD, 15
+#define CONFIG_SYS_NAND_READY_PIN		AT91_PIO_PORTA, 22
+#endif
+
+/* Ethernet */
+#define CONFIG_MACB			1
+#define CONFIG_RMII			1
+#define CONFIG_NET_MULTI		1
+#define CONFIG_NET_RETRY_COUNT		20
+#define CONFIG_MACB_SEARCH_PHY		1
+
+/* USB */
+#define CONFIG_USB_ATMEL
+#define CONFIG_USB_OHCI_NEW		        1
+#define CONFIG_DOS_PARTITION		        1
+#define CONFIG_SYS_USB_OHCI_CPU_INIT		1
+#define CONFIG_SYS_USB_OHCI_REGS_BASE		0x00a00000
+#define CONFIG_SYS_USB_OHCI_SLOT_NAME		"at91sam9263"
+#define CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS	2
+#define CONFIG_USB_STORAGE		        1
+#define CONFIG_CMD_FAT			        1
+
+#define CONFIG_SYS_LOAD_ADDR			0x22000000
+
+#define CONFIG_SYS_MEMTEST_START		PHYS_SDRAM
+#define CONFIG_SYS_MEMTEST_END			0x23e00000
+
+/* bootstrap + u-boot + env in dataflash on CS0 */
+#define CONFIG_ENV_IS_IN_DATAFLASH	1
+#define CONFIG_SYS_MONITOR_BASE	(CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0)
+#define CONFIG_ENV_OFFSET		0x2000
+#define CONFIG_ENV_ADDR		(CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0 + \
+				 CONFIG_ENV_OFFSET)
+#define CONFIG_ENV_SIZE		0x2000
+#define CONFIG_BOOTCOMMAND	"nboot 21000000 0"
+#define CONFIG_BOOTARGS		"console=ttyS0,115200 " \
+				"root=/dev/mtdblock1 " \
+				"mtdparts=atmel_nand:2m(kernel)ro,-(root) "\
+				"rw rootfstype=jffs2"
+
+#define CONFIG_BAUDRATE		115200
+#define CONFIG_SYS_BAUDRATE_TABLE	{115200 , 19200, 38400, 57600, 9600 }
+
+#define CONFIG_SYS_PROMPT		"U-Boot> "
+#define CONFIG_SYS_CBSIZE		256
+#define CONFIG_SYS_MAXARGS		16
+#define CONFIG_SYS_PBSIZE		(CONFIG_SYS_CBSIZE + \
+					 sizeof(CONFIG_SYS_PROMPT) + 16)
+#define CONFIG_SYS_LONGHELP		1
+#define CONFIG_CMDLINE_EDITING	1
+#define CONFIG_AUTO_COMPLETE
+#define CONFIG_SYS_HUSH_PARSER
+#define CONFIG_SYS_PROMPT_HUSH_PS2	"> "
+
+/*
+ * Size of malloc() pool
+ */
+#define CONFIG_SYS_MALLOC_LEN		ROUND(3 * CONFIG_ENV_SIZE + 128*1024, \
+					      0x1000)
+#define CONFIG_SYS_GBL_DATA_SIZE	128	/* 128 bytes for initial data */
+
+#define CONFIG_STACKSIZE	(32*1024)	/* regular stack */
+
+#ifdef CONFIG_USE_IRQ
+#error CONFIG_USE_IRQ not supported
+#endif
+
+#endif
-- 
1.7.0.4

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

* [U-Boot] [PATCH 0/4] Support for board Calao USB A9263
  2010-06-02 16:04 [U-Boot] [PATCH 0/4] Support for board Calao USB A9263 Thomas Petazzoni
                   ` (3 preceding siblings ...)
  2010-06-02 16:04 ` [U-Boot] [PATCH 4/4] Support for Calao USB A9263 board based on AT91SAM9263 CPU Thomas Petazzoni
@ 2010-06-07 12:40 ` Tom Rix
  2010-06-07 21:56   ` [U-Boot] [PATCH 0/4] Calao USB-A9263 v2 Thomas Petazzoni
                     ` (4 more replies)
  4 siblings, 5 replies; 16+ messages in thread
From: Tom Rix @ 2010-06-07 12:40 UTC (permalink / raw)
  To: u-boot

Thomas Petazzoni wrote:
> Hello,
> 
> This patchset implements the support for the Calao USB A9263 board
> (patch 4). The first three patches are preliminary work, to convert
> the Atmel Dataflash SPI driver to the new C struct accessors
> introduced a few months ago for AT91 support in U-Boot.
> 
> Thanks,

This is only a mechanical review.
I tested this patch using MAKEALL arm
and by running the kernel's checkpatch.pl against these patches

There are many at91 errors
Here is a sample, about 10 boards are broken in the same way.

	atmel_dataflash_spi.c: In function 'AT91F_SpiInit':
	atmel_dataflash_spi.c:42: error: 'AT91_SPI0_BASE' undeclared (first use in this 
function)
	atmel_dataflash_spi.c:42: error: (Each undeclared identifier is reported only once
	atmel_dataflash_spi.c:42: error: for each function it appears in.)
	atmel_dataflash_spi.c: In function 'AT91F_SpiEnable':
	atmel_dataflash_spi.c:100: error: 'AT91_SPI0_BASE' undeclared (first use in 
this function)
	atmel_dataflash_spi.c: In function 'AT91F_SpiWrite':
	atmel_dataflash_spi.c:138: error: 'AT91_SPI0_BASE' undeclared (first use in 
this function)
	make[1]: *** [.../build/drivers/spi/atmel_dataflash_spi.o] Error 1
	make: *** [.../build/drivers/spi/libspi.a] Error 2
	make: *** Waiting for unfinished jobs....

usb9263 does not build

usb9263.ERR
did not build.

Many kernel check patch errors and warnings.

Please resolve these and resubmit.

Tom

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

* [U-Boot] [PATCH 0/4] Calao USB-A9263 v2
  2010-06-07 12:40 ` [U-Boot] [PATCH 0/4] Support for board Calao USB A9263 Tom Rix
@ 2010-06-07 21:56   ` Thomas Petazzoni
  2010-06-07 21:56   ` [U-Boot] [PATCH 1/4] Atmel Dataflash: convert to C struct accessors Thomas Petazzoni
                     ` (3 subsequent siblings)
  4 siblings, 0 replies; 16+ messages in thread
From: Thomas Petazzoni @ 2010-06-07 21:56 UTC (permalink / raw)
  To: u-boot

Hello,

Here is a resend of the Calao USB-A9263 board support, with the
following changes since v1:

 * checkpatch fixes all over the place. There is a remaining "Macros
   with complex values should be enclosed in parenthesis" checkpatch
   issue, but this is unfortunately how this macro should be used
   (it's the new AT91 accessors)

 * build fixes for all AT91 boards. "MAKEALL at91" builds all boards
   sucessfully. There are only one warning per board saying that
   atmel_usart should be converted to C struct accessors. I intend to
   work on this when the current patches get merged.

Thanks,

Thomas

Thomas Petazzoni (4):
  Atmel Dataflash: convert to C struct accessors
  at91_spi: remove register offsets
  Add new style definition for SPI0_BASE
  Support for Calao USB A9263 board based on AT91SAM9263 CPU

 MAINTAINERS                                  |    4 +
 MAKEALL                                      |    1 +
 Makefile                                     |    3 +
 arch/arm/include/asm/arch-at91/at91_spi.h    |  157 ++++++++++------------
 arch/arm/include/asm/arch-at91/at91cap9.h    |    1 +
 arch/arm/include/asm/arch-at91/at91sam9260.h |    1 +
 arch/arm/include/asm/arch-at91/at91sam9261.h |    1 +
 arch/arm/include/asm/arch-at91/at91sam9263.h |    1 +
 arch/arm/include/asm/arch-at91/at91sam9g45.h |    1 +
 arch/arm/include/asm/arch-at91/at91sam9rl.h  |    1 +
 board/calao/usb-a9263/Makefile               |   58 ++++++++
 board/calao/usb-a9263/config.mk              |   24 ++++
 board/calao/usb-a9263/partition.c            |   38 ++++++
 board/calao/usb-a9263/usb-a9263.c            |  186 ++++++++++++++++++++++++++
 drivers/spi/atmel_dataflash_spi.c            |   77 ++++++-----
 include/configs/usb-a9263.h                  |  182 +++++++++++++++++++++++++
 16 files changed, 611 insertions(+), 125 deletions(-)
 create mode 100644 board/calao/usb-a9263/Makefile
 create mode 100644 board/calao/usb-a9263/config.mk
 create mode 100644 board/calao/usb-a9263/partition.c
 create mode 100644 board/calao/usb-a9263/usb-a9263.c
 create mode 100644 include/configs/usb-a9263.h

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

* [U-Boot] [PATCH 1/4] Atmel Dataflash: convert to C struct accessors
  2010-06-07 12:40 ` [U-Boot] [PATCH 0/4] Support for board Calao USB A9263 Tom Rix
  2010-06-07 21:56   ` [U-Boot] [PATCH 0/4] Calao USB-A9263 v2 Thomas Petazzoni
@ 2010-06-07 21:56   ` Thomas Petazzoni
  2010-06-07 22:52     ` Mike Frysinger
  2010-06-07 21:56   ` [U-Boot] [PATCH 2/4] at91_spi: remove register offsets Thomas Petazzoni
                     ` (2 subsequent siblings)
  4 siblings, 1 reply; 16+ messages in thread
From: Thomas Petazzoni @ 2010-06-07 21:56 UTC (permalink / raw)
  To: u-boot

Instead of using the old-style base + offset accessors, use the new
at91 C struct accessors.

The removal of #ifdef CONFIG_AT91_LEGACY allows to keep the definition
of register values, needed to program the SPI.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 arch/arm/include/asm/arch-at91/at91_spi.h |    4 --
 drivers/spi/atmel_dataflash_spi.c         |   77 +++++++++++++++-------------
 2 files changed, 41 insertions(+), 40 deletions(-)

diff --git a/arch/arm/include/asm/arch-at91/at91_spi.h b/arch/arm/include/asm/arch-at91/at91_spi.h
index c520e89..73e23cf 100644
--- a/arch/arm/include/asm/arch-at91/at91_spi.h
+++ b/arch/arm/include/asm/arch-at91/at91_spi.h
@@ -33,8 +33,6 @@ typedef struct at91_spi {
 	at91_pdc_t	pdc;
 } at91_spi_t;
 
-#ifdef CONFIG_AT91_LEGACY
-
 #define AT91_SPI_CR			0x00		/* Control Register */
 #define		AT91_SPI_SPIEN		(1 <<  0)		/* SPI Enable */
 #define		AT91_SPI_SPIDIS		(1 <<  1)		/* SPI Disable */
@@ -121,6 +119,4 @@ typedef struct at91_spi {
 
 #define AT91_SPI_PTSR		0x0124			/* PDC Transfer Status Register */
 
-#endif /* CONFIG_AT91_LEGACY */
-
 #endif
diff --git a/drivers/spi/atmel_dataflash_spi.c b/drivers/spi/atmel_dataflash_spi.c
index 4a5c4aa..3693c93 100644
--- a/drivers/spi/atmel_dataflash_spi.c
+++ b/drivers/spi/atmel_dataflash_spi.c
@@ -2,6 +2,9 @@
  * Driver for ATMEL DataFlash support
  * Author : Hamid Ikdoumi (Atmel)
  *
+ * Conversion to C struct SoC accessors by Thomas Petazzoni
+ * <thomas.petazzoni@free-electrons.com>.
+ *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License as
  * published by the Free Software Foundation; either version 2 of
@@ -20,10 +23,6 @@
  */
 
 #include <common.h>
-#ifndef CONFIG_AT91_LEGACY
-#define CONFIG_AT91_LEGACY
-#warning Please update to use C structur SoC access !
-#endif
 #include <asm/arch/hardware.h>
 #include <asm/arch/clk.h>
 #include <asm/arch/gpio.h>
@@ -40,19 +39,21 @@
 
 void AT91F_SpiInit(void)
 {
+	at91_spi_t *spi = (at91_spi_t *) AT91_SPI0_BASE;
+
 	/* Reset the SPI */
-	writel(AT91_SPI_SWRST, AT91_BASE_SPI + AT91_SPI_CR);
+	writel(AT91_SPI_SWRST, &spi->cr);
 
 	/* Configure SPI in Master Mode with No CS selected !!! */
 	writel(AT91_SPI_MSTR | AT91_SPI_MODFDIS | AT91_SPI_PCS,
-	       AT91_BASE_SPI + AT91_SPI_MR);
+	       &spi->mr);
 
 	/* Configure CS0 */
 	writel(AT91_SPI_NCPHA |
 	       (AT91_SPI_DLYBS & DATAFLASH_TCSS) |
 	       (AT91_SPI_DLYBCT & DATAFLASH_TCHS) |
 	       ((get_mck_clk_rate() / AT91_SPI_CLK) << 8),
-	       AT91_BASE_SPI + AT91_SPI_CSR(0));
+	       &spi->csr[0]);
 
 #ifdef CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS1
 	/* Configure CS1 */
@@ -60,7 +61,7 @@ void AT91F_SpiInit(void)
 	       (AT91_SPI_DLYBS & DATAFLASH_TCSS) |
 	       (AT91_SPI_DLYBCT & DATAFLASH_TCHS) |
 	       ((get_mck_clk_rate() / AT91_SPI_CLK) << 8),
-	       AT91_BASE_SPI + AT91_SPI_CSR(1));
+	       &spi->csr[1]);
 #endif
 #ifdef CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS2
 	/* Configure CS2 */
@@ -68,7 +69,7 @@ void AT91F_SpiInit(void)
 	       (AT91_SPI_DLYBS & DATAFLASH_TCSS) |
 	       (AT91_SPI_DLYBCT & DATAFLASH_TCHS) |
 	       ((get_mck_clk_rate() / AT91_SPI_CLK) << 8),
-	       AT91_BASE_SPI + AT91_SPI_CSR(2));
+	       &spi->csr[2]);
 #endif
 #ifdef CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS3
 	/* Configure CS3 */
@@ -76,95 +77,99 @@ void AT91F_SpiInit(void)
 	       (AT91_SPI_DLYBS & DATAFLASH_TCSS) |
 	       (AT91_SPI_DLYBCT & DATAFLASH_TCHS) |
 	       ((get_mck_clk_rate() / AT91_SPI_CLK) << 8),
-	       AT91_BASE_SPI + AT91_SPI_CSR(3));
+	       &spi->csr[3]);
 #endif
 
 	/* SPI_Enable */
-	writel(AT91_SPI_SPIEN, AT91_BASE_SPI + AT91_SPI_CR);
+	writel(AT91_SPI_SPIEN, &spi->cr);
 
-	while (!(readl(AT91_BASE_SPI + AT91_SPI_SR) & AT91_SPI_SPIENS));
+	while (!(readl(&spi->sr) & AT91_SPI_SPIENS))
+		;
 
 	/*
 	 * Add tempo to get SPI in a safe state.
 	 * Should not be needed for new silicon (Rev B)
 	 */
 	udelay(500000);
-	readl(AT91_BASE_SPI + AT91_SPI_SR);
-	readl(AT91_BASE_SPI + AT91_SPI_RDR);
+	readl(&spi->sr);
+	readl(&spi->rdr);
 
 }
 
 void AT91F_SpiEnable(int cs)
 {
+	at91_spi_t *spi = (at91_spi_t *) AT91_SPI0_BASE;
 	unsigned long mode;
 
 	switch (cs) {
 	case 0:	/* Configure SPI CS0 for Serial DataFlash AT45DBxx */
-		mode = readl(AT91_BASE_SPI + AT91_SPI_MR);
+		mode = readl(&spi->mr);
 		mode &= 0xFFF0FFFF;
 		writel(mode | ((AT91_SPI_PCS0_DATAFLASH_CARD<<16) & AT91_SPI_PCS),
-		       AT91_BASE_SPI + AT91_SPI_MR);
+		       &spi->mr);
 		break;
 	case 1:	/* Configure SPI CS1 for Serial DataFlash AT45DBxx */
-		mode = readl(AT91_BASE_SPI + AT91_SPI_MR);
+		mode = readl(&spi->mr);
 		mode &= 0xFFF0FFFF;
 		writel(mode | ((AT91_SPI_PCS1_DATAFLASH_CARD<<16) & AT91_SPI_PCS),
-		       AT91_BASE_SPI + AT91_SPI_MR);
+		       &spi->mr);
 		break;
 	case 2:	/* Configure SPI CS2 for Serial DataFlash AT45DBxx */
-		mode = readl(AT91_BASE_SPI + AT91_SPI_MR);
+		mode = readl(&spi->mr);
 		mode &= 0xFFF0FFFF;
 		writel(mode | ((AT91_SPI_PCS2_DATAFLASH_CARD<<16) & AT91_SPI_PCS),
-		       AT91_BASE_SPI + AT91_SPI_MR);
+		       &spi->mr);
 		break;
 	case 3:
-		mode = readl(AT91_BASE_SPI + AT91_SPI_MR);
+		mode = readl(&spi->mr);
 		mode &= 0xFFF0FFFF;
 		writel(mode | ((AT91_SPI_PCS3_DATAFLASH_CARD<<16) & AT91_SPI_PCS),
-		       AT91_BASE_SPI + AT91_SPI_MR);
+		       &spi->mr);
 		break;
 	}
 
 	/* SPI_Enable */
-	writel(AT91_SPI_SPIEN, AT91_BASE_SPI + AT91_SPI_CR);
+	writel(AT91_SPI_SPIEN, &spi->cr);
 }
 
 unsigned int AT91F_SpiWrite1(AT91PS_DataflashDesc pDesc);
 
 unsigned int AT91F_SpiWrite(AT91PS_DataflashDesc pDesc)
 {
+	at91_spi_t *spi = (at91_spi_t *) AT91_SPI0_BASE;
 	unsigned int timeout;
 
 	pDesc->state = BUSY;
 
-	writel(AT91_SPI_TXTDIS + AT91_SPI_RXTDIS, AT91_BASE_SPI + AT91_SPI_PTCR);
+	writel(AT91_SPI_TXTDIS + AT91_SPI_RXTDIS, &spi->pdc.ptcr);
 
 	/* Initialize the Transmit and Receive Pointer */
-	writel((unsigned int)pDesc->rx_cmd_pt, AT91_BASE_SPI + AT91_SPI_RPR);
-	writel((unsigned int)pDesc->tx_cmd_pt, AT91_BASE_SPI + AT91_SPI_TPR);
+	writel((unsigned int)pDesc->rx_cmd_pt, &spi->pdc.rpr);
+	writel((unsigned int)pDesc->tx_cmd_pt, &spi->pdc.tpr);
 
 	/* Intialize the Transmit and Receive Counters */
-	writel(pDesc->rx_cmd_size, AT91_BASE_SPI + AT91_SPI_RCR);
-	writel(pDesc->tx_cmd_size, AT91_BASE_SPI + AT91_SPI_TCR);
+	writel(pDesc->rx_cmd_size, &spi->pdc.rcr);
+	writel(pDesc->tx_cmd_size, &spi->pdc.tcr);
 
 	if (pDesc->tx_data_size != 0) {
 		/* Initialize the Next Transmit and Next Receive Pointer */
-		writel((unsigned int)pDesc->rx_data_pt, AT91_BASE_SPI + AT91_SPI_RNPR);
-		writel((unsigned int)pDesc->tx_data_pt, AT91_BASE_SPI + AT91_SPI_TNPR);
+		writel((unsigned int)pDesc->rx_data_pt, &spi->pdc.pnpr);
+		writel((unsigned int)pDesc->tx_data_pt, &spi->pdc.tnpr);
 
 		/* Intialize the Next Transmit and Next Receive Counters */
-		writel(pDesc->rx_data_size, AT91_BASE_SPI + AT91_SPI_RNCR);
-		writel(pDesc->tx_data_size, AT91_BASE_SPI + AT91_SPI_TNCR);
+		writel(pDesc->rx_data_size, &spi->pdc.pncr);
+		writel(pDesc->tx_data_size, &spi->pdc.tncr);
 	}
 
 	/* arm simple, non interrupt dependent timer */
 	reset_timer_masked();
 	timeout = 0;
 
-	writel(AT91_SPI_TXTEN + AT91_SPI_RXTEN, AT91_BASE_SPI + AT91_SPI_PTCR);
-	while (!(readl(AT91_BASE_SPI + AT91_SPI_SR) & AT91_SPI_RXBUFF) &&
-		((timeout = get_timer_masked()) < CONFIG_SYS_SPI_WRITE_TOUT));
-	writel(AT91_SPI_TXTDIS + AT91_SPI_RXTDIS, AT91_BASE_SPI + AT91_SPI_PTCR);
+	writel(AT91_SPI_TXTEN + AT91_SPI_RXTEN, &spi->pdc.ptcr);
+	while (!(readl(&spi->sr) & AT91_SPI_RXBUFF) &&
+		((timeout = get_timer_masked()) < CONFIG_SYS_SPI_WRITE_TOUT))
+		;
+	writel(AT91_SPI_TXTDIS + AT91_SPI_RXTDIS, &spi->pdc.ptcr);
 	pDesc->state = IDLE;
 
 	if (timeout >= CONFIG_SYS_SPI_WRITE_TOUT) {
-- 
1.7.0.4

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

* [U-Boot] [PATCH 2/4] at91_spi: remove register offsets
  2010-06-07 12:40 ` [U-Boot] [PATCH 0/4] Support for board Calao USB A9263 Tom Rix
  2010-06-07 21:56   ` [U-Boot] [PATCH 0/4] Calao USB-A9263 v2 Thomas Petazzoni
  2010-06-07 21:56   ` [U-Boot] [PATCH 1/4] Atmel Dataflash: convert to C struct accessors Thomas Petazzoni
@ 2010-06-07 21:56   ` Thomas Petazzoni
  2010-06-07 21:56   ` [U-Boot] [PATCH 3/4] Add new style definition for SPI0_BASE Thomas Petazzoni
  2010-06-07 21:56   ` [U-Boot] [PATCH 4/4] Support for Calao USB A9263 board based on AT91SAM9263 CPU Thomas Petazzoni
  4 siblings, 0 replies; 16+ messages in thread
From: Thomas Petazzoni @ 2010-06-07 21:56 UTC (permalink / raw)
  To: u-boot

Since all users of at91_spi have been converted to C struct accessors,
the register offsets definitions are no longer needed.

We take this opportunity to do a little bit of reformatting for the
register bits definitions.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 arch/arm/include/asm/arch-at91/at91_spi.h |  153 +++++++++++++----------------
 1 files changed, 68 insertions(+), 85 deletions(-)

diff --git a/arch/arm/include/asm/arch-at91/at91_spi.h b/arch/arm/include/asm/arch-at91/at91_spi.h
index 73e23cf..0046256 100644
--- a/arch/arm/include/asm/arch-at91/at91_spi.h
+++ b/arch/arm/include/asm/arch-at91/at91_spi.h
@@ -33,90 +33,73 @@ typedef struct at91_spi {
 	at91_pdc_t	pdc;
 } at91_spi_t;
 
-#define AT91_SPI_CR			0x00		/* Control Register */
-#define		AT91_SPI_SPIEN		(1 <<  0)		/* SPI Enable */
-#define		AT91_SPI_SPIDIS		(1 <<  1)		/* SPI Disable */
-#define		AT91_SPI_SWRST		(1 <<  7)		/* SPI Software Reset */
-#define		AT91_SPI_LASTXFER	(1 << 24)		/* Last Transfer [SAM9261 only] */
-
-#define AT91_SPI_MR			0x04		/* Mode Register */
-#define		AT91_SPI_MSTR		(1    <<  0)		/* Master/Slave Mode */
-#define		AT91_SPI_PS		(1    <<  1)		/* Peripheral Select */
-#define			AT91_SPI_PS_FIXED	(0 << 1)
-#define			AT91_SPI_PS_VARIABLE	(1 << 1)
-#define		AT91_SPI_PCSDEC		(1    <<  2)		/* Chip Select Decode */
-#define		AT91_SPI_DIV32		(1    <<  3)		/* Clock Selection [AT91RM9200 only] */
-#define		AT91_SPI_MODFDIS	(1    <<  4)		/* Mode Fault Detection */
-#define		AT91_SPI_LLB		(1    <<  7)		/* Local Loopback Enable */
-#define		AT91_SPI_PCS		(0xf  << 16)		/* Peripheral Chip Select */
-#define		AT91_SPI_DLYBCS		(0xff << 24)		/* Delay Between Chip Selects */
-
-#define AT91_SPI_RDR		0x08			/* Receive Data Register */
-#define		AT91_SPI_RD		(0xffff <<  0)		/* Receive Data */
-#define		AT91_SPI_PCS		(0xf	<< 16)		/* Peripheral Chip Select */
-
-#define AT91_SPI_TDR		0x0c			/* Transmit Data Register */
-#define		AT91_SPI_TD		(0xffff <<  0)		/* Transmit Data */
-#define		AT91_SPI_PCS		(0xf	<< 16)		/* Peripheral Chip Select */
-#define		AT91_SPI_LASTXFER	(1	<< 24)		/* Last Transfer [SAM9261 only] */
-
-#define AT91_SPI_SR		0x10			/* Status Register */
-#define		AT91_SPI_RDRF		(1 <<  0)		/* Receive Data Register Full */
-#define		AT91_SPI_TDRE		(1 <<  1)		/* Transmit Data Register Full */
-#define		AT91_SPI_MODF		(1 <<  2)		/* Mode Fault Error */
-#define		AT91_SPI_OVRES		(1 <<  3)		/* Overrun Error Status */
-#define		AT91_SPI_ENDRX		(1 <<  4)		/* End of RX buffer */
-#define		AT91_SPI_ENDTX		(1 <<  5)		/* End of TX buffer */
-#define		AT91_SPI_RXBUFF		(1 <<  6)		/* RX Buffer Full */
-#define		AT91_SPI_TXBUFE		(1 <<  7)		/* TX Buffer Empty */
-#define		AT91_SPI_NSSR		(1 <<  8)		/* NSS Rising [SAM9261 only] */
-#define		AT91_SPI_TXEMPTY	(1 <<  9)		/* Transmission Register Empty [SAM9261 only] */
-#define		AT91_SPI_SPIENS		(1 << 16)		/* SPI Enable Status */
-
-#define AT91_SPI_IER		0x14			/* Interrupt Enable Register */
-#define AT91_SPI_IDR		0x18			/* Interrupt Disable Register */
-#define AT91_SPI_IMR		0x1c			/* Interrupt Mask Register */
-
-#define AT91_SPI_CSR(n)		(0x30 + ((n) * 4))	/* Chip Select Registers 0-3 */
-#define		AT91_SPI_CPOL		(1    <<  0)		/* Clock Polarity */
-#define		AT91_SPI_NCPHA		(1    <<  1)		/* Clock Phase */
-#define		AT91_SPI_CSAAT		(1    <<  3)		/* Chip Select Active After Transfer [SAM9261 only] */
-#define		AT91_SPI_BITS		(0xf  <<  4)		/* Bits Per Transfer */
-#define			AT91_SPI_BITS_8		(0 << 4)
-#define			AT91_SPI_BITS_9		(1 << 4)
-#define			AT91_SPI_BITS_10	(2 << 4)
-#define			AT91_SPI_BITS_11	(3 << 4)
-#define			AT91_SPI_BITS_12	(4 << 4)
-#define			AT91_SPI_BITS_13	(5 << 4)
-#define			AT91_SPI_BITS_14	(6 << 4)
-#define			AT91_SPI_BITS_15	(7 << 4)
-#define			AT91_SPI_BITS_16	(8 << 4)
-#define		AT91_SPI_SCBR		(0xff <<  8)		/* Serial Clock Baud Rate */
-#define		AT91_SPI_DLYBS		(0xff << 16)		/* Delay before SPCK */
-#define		AT91_SPI_DLYBCT		(0xff << 24)		/* Delay between Consecutive Transfers */
-
-#define AT91_SPI_RPR		0x0100			/* Receive Pointer Register */
-
-#define AT91_SPI_RCR		0x0104			/* Receive Counter Register */
-
-#define AT91_SPI_TPR		0x0108			/* Transmit Pointer Register */
-
-#define AT91_SPI_TCR		0x010c			/* Transmit Counter Register */
-
-#define AT91_SPI_RNPR		0x0110			/* Receive Next Pointer Register */
-
-#define AT91_SPI_RNCR		0x0114			/* Receive Next Counter Register */
-
-#define AT91_SPI_TNPR		0x0118			/* Transmit Next Pointer Register */
-
-#define AT91_SPI_TNCR		0x011c			/* Transmit Next Counter Register */
-
-#define AT91_SPI_PTCR		0x0120			/* PDC Transfer Control Register */
-#define		AT91_SPI_RXTEN		(0x1 << 0)		/* Receiver Transfer Enable */
-#define		AT91_SPI_RXTDIS		(0x1 << 1)		/* Receiver Transfer Disable */
-#define		AT91_SPI_TXTEN		(0x1 << 8)		/* Transmitter Transfer Enable */
-#define		AT91_SPI_TXTDIS		(0x1 << 9)		/* Transmitter Transfer Disable */
-
-#define AT91_SPI_PTSR		0x0124			/* PDC Transfer Status Register */
+/* Control Register bits */
+#define AT91_SPI_SPIEN        (1 <<  0)      /* SPI Enable */
+#define AT91_SPI_SPIDIS       (1 <<  1)      /* SPI Disable */
+#define AT91_SPI_SWRST        (1 <<  7)      /* SPI Software Reset */
+#define AT91_SPI_LASTXFER     (1 << 24)      /* Last Transfer [SAM9261 only] */
+
+/* Mode Register bits */
+#define AT91_SPI_MSTR         (1    <<  0)   /* Master/Slave Mode */
+#define AT91_SPI_PS           (1    <<  1)   /* Peripheral Select */
+#define  AT91_SPI_PS_FIXED        (0 << 1)
+#define  AT91_SPI_PS_VARIABLE     (1 << 1)
+#define AT91_SPI_PCSDEC       (1    <<  2)   /* Chip Select Decode */
+#define AT91_SPI_DIV32        (1    <<  3)   /* Clock Selection
+						[AT91RM9200 only] */
+#define AT91_SPI_MODFDIS      (1    <<  4)   /* Mode Fault Detection */
+#define AT91_SPI_LLB          (1    <<  7)   /* Local Loopback Enable */
+#define AT91_SPI_PCS          (0xf  << 16)   /* Peripheral Chip Select */
+#define AT91_SPI_DLYBCS       (0xff << 24)   /* Delay Between Chip Selects */
+
+/* Receive data register bits */
+#define AT91_SPI_RD           (0xffff <<  0) /* Receive Data */
+#define AT91_SPI_PCS          (0xf    << 16) /* Peripheral Chip Select */
+
+/* Transmit Data Register bits */
+#define AT91_SPI_TD           (0xffff <<  0) /* Transmit Data */
+#define AT91_SPI_PCS          (0xf    << 16) /* Peripheral Chip Select */
+#define AT91_SPI_LASTXFER     (1      << 24) /* Last Transfer [SAM9261 only] */
+
+/* Status Register bits */
+#define AT91_SPI_RDRF         (1 <<  0)      /* Receive Data Register Full */
+#define AT91_SPI_TDRE         (1 <<  1)      /* Transmit Data Register Full */
+#define AT91_SPI_MODF         (1 <<  2)      /* Mode Fault Error */
+#define AT91_SPI_OVRES        (1 <<  3)      /* Overrun Error Status */
+#define AT91_SPI_ENDRX        (1 <<  4)      /* End of RX buffer */
+#define AT91_SPI_ENDTX        (1 <<  5)      /* End of TX buffer */
+#define AT91_SPI_RXBUFF       (1 <<  6)      /* RX Buffer Full */
+#define AT91_SPI_TXBUFE       (1 <<  7)      /* TX Buffer Empty */
+#define AT91_SPI_NSSR         (1 <<  8)      /* NSS Rising [SAM9261 only] */
+#define AT91_SPI_TXEMPTY      (1 <<  9)      /* Transmission Register
+						Empty [SAM9261 only] */
+#define AT91_SPI_SPIENS       (1 << 16)      /* SPI Enable Status */
+
+/* Chip Select Registers bits */
+#define AT91_SPI_CPOL         (1    <<  0)   /* Clock Polarity */
+#define AT91_SPI_NCPHA        (1    <<  1)   /* Clock Phase */
+#define AT91_SPI_CSAAT        (1    <<  3)   /* Chip Select Active
+						After Transfer
+						[SAM9261 only] */
+#define AT91_SPI_BITS         (0xf  <<  4)   /* Bits Per Transfer */
+#define  AT91_SPI_BITS_8          (0 << 4)
+#define  AT91_SPI_BITS_9          (1 << 4)
+#define  AT91_SPI_BITS_10         (2 << 4)
+#define  AT91_SPI_BITS_11         (3 << 4)
+#define  AT91_SPI_BITS_12         (4 << 4)
+#define  AT91_SPI_BITS_13         (5 << 4)
+#define  AT91_SPI_BITS_14         (6 << 4)
+#define  AT91_SPI_BITS_15         (7 << 4)
+#define  AT91_SPI_BITS_16         (8 << 4)
+#define AT91_SPI_SCBR         (0xff <<  8)   /* Serial Clock Baud Rate */
+#define AT91_SPI_DLYBS        (0xff << 16)   /* Delay before SPCK */
+#define AT91_SPI_DLYBCT       (0xff << 24)   /* Delay between Consecutive
+						Transfers */
+
+/* PDC Transfer Control Register bits */
+#define AT91_SPI_RXTEN        (0x1 << 0)     /* Receiver Transfer Enable */
+#define AT91_SPI_RXTDIS       (0x1 << 1)     /* Receiver Transfer Disable */
+#define AT91_SPI_TXTEN        (0x1 << 8)     /* Transmitter Transfer Enable */
+#define AT91_SPI_TXTDIS       (0x1 << 9)     /* Transmitter Transfer Disable */
 
 #endif
-- 
1.7.0.4

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

* [U-Boot] [PATCH 3/4] Add new style definition for SPI0_BASE
  2010-06-07 12:40 ` [U-Boot] [PATCH 0/4] Support for board Calao USB A9263 Tom Rix
                     ` (2 preceding siblings ...)
  2010-06-07 21:56   ` [U-Boot] [PATCH 2/4] at91_spi: remove register offsets Thomas Petazzoni
@ 2010-06-07 21:56   ` Thomas Petazzoni
  2010-06-07 21:56   ` [U-Boot] [PATCH 4/4] Support for Calao USB A9263 board based on AT91SAM9263 CPU Thomas Petazzoni
  4 siblings, 0 replies; 16+ messages in thread
From: Thomas Petazzoni @ 2010-06-07 21:56 UTC (permalink / raw)
  To: u-boot

The new C struct accessors define new constants for the base address
of the peripherals.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 arch/arm/include/asm/arch-at91/at91cap9.h    |    1 +
 arch/arm/include/asm/arch-at91/at91sam9260.h |    1 +
 arch/arm/include/asm/arch-at91/at91sam9261.h |    1 +
 arch/arm/include/asm/arch-at91/at91sam9263.h |    1 +
 arch/arm/include/asm/arch-at91/at91sam9g45.h |    1 +
 arch/arm/include/asm/arch-at91/at91sam9rl.h  |    1 +
 6 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/arch/arm/include/asm/arch-at91/at91cap9.h b/arch/arm/include/asm/arch-at91/at91cap9.h
index 5af6fdc..732ee95 100644
--- a/arch/arm/include/asm/arch-at91/at91cap9.h
+++ b/arch/arm/include/asm/arch-at91/at91cap9.h
@@ -53,6 +53,7 @@
 #define AT91CAP9_ID_IRQ0	30	/* Advanced Interrupt Controller (IRQ0) */
 #define AT91CAP9_ID_IRQ1	31	/* Advanced Interrupt Controller (IRQ1) */
 
+#define AT91_SPI0_BASE	0xfffa4000
 #define AT91_PIO_BASE	0xfffff200
 #define AT91_PMC_BASE	0xfffffc00
 #define AT91_RSTC_BASE	0xfffffd00
diff --git a/arch/arm/include/asm/arch-at91/at91sam9260.h b/arch/arm/include/asm/arch-at91/at91sam9260.h
index ec04318..fda8e59 100644
--- a/arch/arm/include/asm/arch-at91/at91sam9260.h
+++ b/arch/arm/include/asm/arch-at91/at91sam9260.h
@@ -50,6 +50,7 @@
 #define AT91SAM9260_ID_IRQ2	31	/* Advanced Interrupt Controller (IRQ2) */
 
 #define AT91_EMAC_BASE		0xfffc4000
+#define AT91_SPI0_BASE		0xfffc8000
 #define AT91_SDRAMC_BASE	0xffffea00
 #define AT91_SMC_BASE		0xffffec00
 #define AT91_MATRIX_BASE	0xffffee00
diff --git a/arch/arm/include/asm/arch-at91/at91sam9261.h b/arch/arm/include/asm/arch-at91/at91sam9261.h
index 7ca0283..ef57403 100644
--- a/arch/arm/include/asm/arch-at91/at91sam9261.h
+++ b/arch/arm/include/asm/arch-at91/at91sam9261.h
@@ -43,6 +43,7 @@
 #define AT91SAM9261_ID_IRQ1	30	/* Advanced Interrupt Controller (IRQ1) */
 #define AT91SAM9261_ID_IRQ2	31	/* Advanced Interrupt Controller (IRQ2) */
 
+#define AT91_SPI0_BASE		0xfffc8000
 #define AT91_SDRAMC_BASE	0xffffea00
 #define AT91_SMC_BASE		0xffffec00
 #define AT91_MATRIX_BASE	0xffffee00
diff --git a/arch/arm/include/asm/arch-at91/at91sam9263.h b/arch/arm/include/asm/arch-at91/at91sam9263.h
index 4ada1ce..d6c8982 100644
--- a/arch/arm/include/asm/arch-at91/at91sam9263.h
+++ b/arch/arm/include/asm/arch-at91/at91sam9263.h
@@ -47,6 +47,7 @@
 #define AT91SAM9263_ID_IRQ0	30	/* Advanced Interrupt Controller (IRQ0) */
 #define AT91SAM9263_ID_IRQ1	31	/* Advanced Interrupt Controller (IRQ1) */
 
+#define AT91_SPI0_BASE		0xfffa4000
 #define AT91_EMAC_BASE		0xfffbc000
 #define AT91_ECC0_BASE		0xffffe000
 #define AT91_SDRAMC0_BASE	0xffffe200
diff --git a/arch/arm/include/asm/arch-at91/at91sam9g45.h b/arch/arm/include/asm/arch-at91/at91sam9g45.h
index 445f4b2..9bf4149 100644
--- a/arch/arm/include/asm/arch-at91/at91sam9g45.h
+++ b/arch/arm/include/asm/arch-at91/at91sam9g45.h
@@ -51,6 +51,7 @@
 #define AT91SAM9G45_ID_VDEC	30	/* Video Decoder */
 #define AT91SAM9G45_ID_IRQ0	31	/* Advanced Interrupt Controller */
 
+#define AT91_SPI0_BASE		0xfffa4000
 #define AT91_EMAC_BASE		0xfffbc000
 #define AT91_SMC_BASE		0xffffe800
 #define AT91_MATRIX_BASE	0xffffea00
diff --git a/arch/arm/include/asm/arch-at91/at91sam9rl.h b/arch/arm/include/asm/arch-at91/at91sam9rl.h
index 8eb0d4f..5807cd2 100644
--- a/arch/arm/include/asm/arch-at91/at91sam9rl.h
+++ b/arch/arm/include/asm/arch-at91/at91sam9rl.h
@@ -44,6 +44,7 @@
 #define AT91SAM9RL_ID_AC97C	24	/* AC97 Controller */
 #define AT91SAM9RL_ID_IRQ0	31	/* Advanced Interrupt Controller (IRQ0) */
 
+#define AT91_SPI0_BASE		0xfffcc000
 #define AT91_SDRAMC_BASE	0xffffea00
 #define AT91_SMC_BASE		0xffffec00
 #define AT91_MATRIX_BASE	0xffffee00
-- 
1.7.0.4

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

* [U-Boot] [PATCH 4/4] Support for Calao USB A9263 board based on AT91SAM9263 CPU
  2010-06-07 12:40 ` [U-Boot] [PATCH 0/4] Support for board Calao USB A9263 Tom Rix
                     ` (3 preceding siblings ...)
  2010-06-07 21:56   ` [U-Boot] [PATCH 3/4] Add new style definition for SPI0_BASE Thomas Petazzoni
@ 2010-06-07 21:56   ` Thomas Petazzoni
  4 siblings, 0 replies; 16+ messages in thread
From: Thomas Petazzoni @ 2010-06-07 21:56 UTC (permalink / raw)
  To: u-boot

The Calao USB A9263 board is a board manufactured and sold by Calao
Systems <http://www.calao-systems.com>. Its components are very
similar to the AT91SAM9263EK board, so its configuration is based
on the configuration of this board. There are however some
differences: different clocks, no LCD, etc.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Albin Tonnerre <albin.tonnerre@free-electrons.com>
---
 MAINTAINERS                       |    4 +
 MAKEALL                           |    1 +
 Makefile                          |    3 +
 board/calao/usb-a9263/Makefile    |   58 ++++++++++++
 board/calao/usb-a9263/config.mk   |   24 +++++
 board/calao/usb-a9263/partition.c |   38 ++++++++
 board/calao/usb-a9263/usb-a9263.c |  186 +++++++++++++++++++++++++++++++++++++
 include/configs/usb-a9263.h       |  182 ++++++++++++++++++++++++++++++++++++
 8 files changed, 496 insertions(+), 0 deletions(-)
 create mode 100644 board/calao/usb-a9263/Makefile
 create mode 100644 board/calao/usb-a9263/config.mk
 create mode 100644 board/calao/usb-a9263/partition.c
 create mode 100644 board/calao/usb-a9263/usb-a9263.c
 create mode 100644 include/configs/usb-a9263.h

diff --git a/MAINTAINERS b/MAINTAINERS
index 7a13d28..39c04af 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -700,6 +700,10 @@ Peter Pearse <peter.pearse@arm.com>
 	versatile	ARM926EJ-S
 	versatile	ARM926EJ-S
 
+Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+
+	usb-a9263	ARM926EJS (AT91SAM9263 SoC)
+
 Dave Peverley <dpeverley@mpc-data.co.uk>
 
 	omap730p2	ARM926EJS
diff --git a/MAKEALL b/MAKEALL
index 2527352..585a79e 100755
--- a/MAKEALL
+++ b/MAKEALL
@@ -685,6 +685,7 @@ LIST_at91="			\
 	SBC35_A9G20		\
 	TNY_A9260		\
 	TNY_A9G20		\
+	usb_a9263		\
 "
 
 #########################################################################
diff --git a/Makefile b/Makefile
index c26e491..762ccfb 100644
--- a/Makefile
+++ b/Makefile
@@ -2890,6 +2890,9 @@ TNY_A9260_config	:	unconfig
 	@echo "#define CONFIG_$(@:_config=) 1" >$(obj)include/config.h
 	@$(MKCONFIG) -a tny_a9260 arm arm926ejs tny_a9260 calao at91
 
+usb_a9263_config	:	unconfig
+	@$(MKCONFIG) -a usb-a9263 arm arm926ejs usb-a9263 calao at91
+
 ########################################################################
 ## ARM Integrator boards - see doc/README-integrator for more info.
 integratorap_config	\
diff --git a/board/calao/usb-a9263/Makefile b/board/calao/usb-a9263/Makefile
new file mode 100644
index 0000000..ec79872
--- /dev/null
+++ b/board/calao/usb-a9263/Makefile
@@ -0,0 +1,58 @@
+#
+# (C) Copyright 2003-2008
+# Wolfgang Denk, DENX Software Engineering, wd at denx.de.
+#
+# (C) Copyright 2008
+# Stelian Pop <stelian.pop@leadtechdesign.com>
+# Lead Tech Design <www.leadtechdesign.com>
+#
+# (C) Copyright 2009
+# Thomas Petazzoni, Free Electrons, <thomas.petazzoni@free-electrons.com>
+#
+# See file CREDITS for list of people who contributed to this
+# project.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+# MA 02111-1307 USA
+#
+
+include $(TOPDIR)/config.mk
+
+LIB	= $(obj)lib$(BOARD).a
+
+COBJS-y += usb-a9263.o
+COBJS-$(CONFIG_HAS_DATAFLASH) += partition.o
+
+SRCS	:= $(SOBJS:.o=.S) $(COBJS-y:.o=.c)
+OBJS	:= $(addprefix $(obj),$(COBJS-y))
+SOBJS	:= $(addprefix $(obj),$(SOBJS))
+
+$(LIB):	$(obj).depend $(OBJS) $(SOBJS)
+	$(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
+
+clean:
+	rm -f $(SOBJS) $(OBJS)
+
+distclean:	clean
+	rm -f $(LIB) core *.bak $(obj).depend
+
+#########################################################################
+
+# defines $(obj).depend target
+include $(SRCTREE)/rules.mk
+
+sinclude $(obj).depend
+
+#########################################################################
diff --git a/board/calao/usb-a9263/config.mk b/board/calao/usb-a9263/config.mk
new file mode 100644
index 0000000..2724a7d
--- /dev/null
+++ b/board/calao/usb-a9263/config.mk
@@ -0,0 +1,24 @@
+#
+# (C) Copyright 2009
+# Thomas Petazzoni, Free Electrons, <thomas.petazzoni@free-electrons.com>
+#
+# See file CREDITS for list of people who contributed to this
+# project.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+# MA 02111-1307 USA
+#
+
+TEXT_BASE = 0x23f00000
diff --git a/board/calao/usb-a9263/partition.c b/board/calao/usb-a9263/partition.c
new file mode 100644
index 0000000..614ef0d
--- /dev/null
+++ b/board/calao/usb-a9263/partition.c
@@ -0,0 +1,38 @@
+/*
+ * (C) Copyright 2008-2009
+ * Ulf Samuelsson <ulf@atmel.com>
+ * Thomas Petazzoni, Free Electrons, <thomas.petazzoni@free-electrons.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ */
+#include <common.h>
+#include <config.h>
+#include <asm/hardware.h>
+#include <dataflash.h>
+
+AT91S_DATAFLASH_INFO dataflash_info[CONFIG_SYS_MAX_DATAFLASH_BANKS];
+
+struct dataflash_addr cs[CONFIG_SYS_MAX_DATAFLASH_BANKS] = {
+	{CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0, 0},	/* Logical adress, CS */
+};
+
+/*define the area offsets*/
+dataflash_protect_t area_list[NB_DATAFLASH_AREA] = {
+	{0x00000000, 0x00001FFF, FLAG_PROTECT_SET,   0, "Bootstrap"},
+	{0x00002000, 0x00003FFF, FLAG_PROTECT_CLEAR, 0, "Environment"},
+	{0x00004000, 0xFFFFFFFF, FLAG_PROTECT_SET,   0, "U-Boot"},
+};
diff --git a/board/calao/usb-a9263/usb-a9263.c b/board/calao/usb-a9263/usb-a9263.c
new file mode 100644
index 0000000..cb1bd64
--- /dev/null
+++ b/board/calao/usb-a9263/usb-a9263.c
@@ -0,0 +1,186 @@
+/*
+ * (C) Copyright 2007-2009
+ * Stelian Pop <stelian.pop@leadtechdesign.com>
+ * Lead Tech Design <www.leadtechdesign.com>
+ * Thomas Petazzoni, Free Electrons, <thomas.petazzoni@free-electrons.com>
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <common.h>
+#include <asm/sizes.h>
+#include <asm/arch/at91sam9263.h>
+#include <asm/arch/at91sam9263_matrix.h>
+#include <asm/arch/at91sam9_smc.h>
+#include <asm/arch/at91_common.h>
+#include <asm/arch/at91_pmc.h>
+#include <asm/arch/at91_rstc.h>
+#include <asm/arch/at91_matrix.h>
+#include <asm/arch/at91_pio.h>
+#include <asm/arch/clk.h>
+#include <asm/arch/gpio.h>
+#include <asm/arch/hardware.h>
+#if defined(CONFIG_MACB)
+#include <net.h>
+#endif
+#include <netdev.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+/* ------------------------------------------------------------------------- */
+/*
+ * Miscelaneous platform dependent initialisations
+ */
+
+#ifdef CONFIG_CMD_NAND
+static void usb_a9263_nand_hw_init(void)
+{
+	unsigned long  csa;
+	at91_smc_t    *smc    = (at91_smc_t *) AT91_SMC0_BASE;
+	at91_matrix_t *matrix = (at91_matrix_t *) AT91_MATRIX_BASE;
+	at91_pmc_t    *pmc    = (at91_pmc_t *) AT91_PMC_BASE;
+
+	/* Enable CS3 */
+	csa = readl(&matrix->csa[0]) | AT91_MATRIX_CSA_EBI_CS3A;
+	writel(csa, &matrix->csa[0]);
+
+	/* Configure SMC CS3 for NAND/SmartMedia */
+	writel(AT91_SMC_SETUP_NWE(1) | AT91_SMC_SETUP_NCS_WR(0) |
+		AT91_SMC_SETUP_NRD(1) | AT91_SMC_SETUP_NCS_RD(0),
+		&smc->cs[3].setup);
+
+	writel(AT91_SMC_PULSE_NWE(3) | AT91_SMC_PULSE_NCS_WR(3) |
+		AT91_SMC_PULSE_NRD(3) | AT91_SMC_PULSE_NCS_RD(3),
+		&smc->cs[3].pulse);
+
+	writel(AT91_SMC_CYCLE_NWE(5) | AT91_SMC_CYCLE_NRD(5),
+		&smc->cs[3].cycle);
+
+	writel(AT91_SMC_MODE_RM_NRD | AT91_SMC_MODE_WM_NWE |
+		AT91_SMC_MODE_EXNW_DISABLE |
+#ifdef CONFIG_SYS_NAND_DBW_16
+		       AT91_SMC_MODE_DBW_16 |
+#else /* CONFIG_SYS_NAND_DBW_8 */
+		       AT91_SMC_MODE_DBW_8 |
+#endif
+		       AT91_SMC_MODE_TDF_CYCLE(2),
+		&smc->cs[3].mode);
+
+	writel(1 << AT91SAM9263_ID_PIOA | 1 << AT91SAM9263_ID_PIOCDE,
+		&pmc->pcer);
+
+	/* Configure RDY/BSY */
+	at91_set_pio_input(CONFIG_SYS_NAND_READY_PIN, 1);
+
+	/* Enable NandFlash */
+	at91_set_pio_output(CONFIG_SYS_NAND_ENABLE_PIN, 1);
+}
+#endif
+
+#ifdef CONFIG_MACB
+static void usb_a9263_macb_hw_init(void)
+{
+	unsigned long    erstl;
+	at91_pmc_t	*pmc	= (at91_pmc_t *) AT91_PMC_BASE;
+	at91_pio_t	*pio	= (at91_pio_t *) AT91_PIO_BASE;
+	at91_rstc_t	*rstc	= (at91_rstc_t *) AT91_RSTC_BASE;
+
+	/* Enable clock */
+	writel(1 << AT91SAM9263_ID_EMAC, &pmc->pcer);
+
+	/*
+	 * Disable pull-up on:
+	 *      RXDV (PC25) => PHY normal mode (not Test mode)
+	 *      ERX0 (PE25) => PHY ADDR0
+	 *      ERX1 (PE26) => PHY ADDR1 => PHYADDR = 0x0
+	 *
+	 * PHY has internal pull-down
+	 */
+	writel(1 << 25, &pio->pioc.pudr);
+	writel((1 << 25) | (1 << 26), &pio->pioe.pudr);
+
+	erstl = readl(&rstc->mr) & AT91_RSTC_MR_ERSTL_MASK;
+
+	/* Need to reset PHY -> 500ms reset */
+	writel(AT91_RSTC_KEY | AT91_RSTC_MR_ERSTL(0x0D) |
+	       AT91_RSTC_MR_URSTEN, &rstc->mr);
+
+	writel(AT91_RSTC_KEY | AT91_RSTC_CR_EXTRST, &rstc->cr);
+
+	/* Wait for end hardware reset */
+	while (!(readl(&rstc->sr) & AT91_RSTC_SR_NRSTL))
+		;
+
+	/* Restore NRST value */
+	writel(AT91_RSTC_KEY | erstl | AT91_RSTC_MR_URSTEN, &rstc->mr);
+
+	/* Re-enable pull-up */
+	writel(1 << 25, &pio->pioc.puer);
+	writel((1 << 25) | (1 << 26), &pio->pioe.puer);
+
+	at91_macb_hw_init();
+}
+#endif
+
+int board_init(void)
+{
+	/* Enable Ctrlc */
+	console_init_f();
+
+	/* arch number of USB-A9263-Board */
+	gd->bd->bi_arch_number = MACH_TYPE_USB_A9263;
+	/* adress of boot parameters */
+	gd->bd->bi_boot_params = PHYS_SDRAM + 0x100;
+
+	at91_serial_hw_init();
+#ifdef CONFIG_CMD_NAND
+	usb_a9263_nand_hw_init();
+#endif
+#ifdef CONFIG_HAS_DATAFLASH
+	at91_set_pio_output(AT91_PIO_PORTE, 20, 1);	/* select spi0 clock */
+	at91_spi0_hw_init(1 << 0);
+#endif
+#ifdef CONFIG_MACB
+	usb_a9263_macb_hw_init();
+#endif
+#ifdef CONFIG_USB_OHCI_NEW
+	at91_uhp_hw_init();
+#endif
+	return 0;
+}
+
+int dram_init(void)
+{
+	gd->bd->bi_dram[0].start = PHYS_SDRAM;
+	gd->bd->bi_dram[0].size = get_ram_size((long *) PHYS_SDRAM,
+					       PHYS_SDRAM_SIZE);
+	if (gd->bd->bi_dram[0].size != PHYS_SDRAM_SIZE)
+		return -1;
+
+	return 0;
+}
+
+int board_eth_init(bd_t *bis)
+{
+	int rc = 0;
+#ifdef CONFIG_MACB
+	rc = macb_eth_initialize(0, (void *) AT91_EMAC_BASE, 0x00);
+#endif
+	return rc;
+}
diff --git a/include/configs/usb-a9263.h b/include/configs/usb-a9263.h
new file mode 100644
index 0000000..3c851ba
--- /dev/null
+++ b/include/configs/usb-a9263.h
@@ -0,0 +1,182 @@
+/*
+ * (C) Copyright 2007-2009
+ * Stelian Pop <stelian.pop@leadtechdesign.com>
+ * Lead Tech Design <www.leadtechdesign.com>
+ * Thomas Petazzoni, Free Electrons, <thomas.petazzoni@free-electrons.com>
+ *
+ * Configuration settings for the Calao USB-A9263 board.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#ifndef __CONFIG_H
+#define __CONFIG_H
+
+/* ARM asynchronous clock */
+#define AT91_MAIN_CLOCK		12000000	/* 12 MHz crystal */
+#define CONFIG_SYS_HZ		1000
+
+#define CONFIG_ARM926EJS	 1	/* This is an ARM926EJS Core	*/
+#define CONFIG_AT91SAM9263	 1	/* It's an Atmel AT91SAM9263 SoC*/
+#define CONFIG_CALAO_USB_A9263	 1	/* on an Calao USB A 9263 Board	*/
+#define CONFIG_ARCH_CPU_INIT
+#undef CONFIG_USE_IRQ			/* we don't need IRQ/FIQ stuff	*/
+
+#define CONFIG_CMDLINE_TAG	 1	/* enable passing of ATAGs	*/
+#define CONFIG_SETUP_MEMORY_TAGS 1
+#define CONFIG_INITRD_TAG	 1
+
+#define CONFIG_SKIP_LOWLEVEL_INIT
+#define CONFIG_SKIP_RELOCATE_UBOOT
+
+/*
+ * Hardware drivers
+ */
+#define CONFIG_AT91_GPIO        1
+#define CONFIG_ATMEL_USART	1
+#undef CONFIG_USART0
+#undef CONFIG_USART1
+#undef CONFIG_USART2
+#define CONFIG_USART3		1	/* USART 3 is DBGU */
+
+/* LCD */
+#undef CONFIG_LCD
+
+#define CONFIG_BOOTDELAY	3
+
+/*
+ * BOOTP options
+ */
+#define CONFIG_BOOTP_BOOTFILESIZE	1
+#define CONFIG_BOOTP_BOOTPATH		1
+#define CONFIG_BOOTP_GATEWAY		1
+#define CONFIG_BOOTP_HOSTNAME		1
+
+/*
+ * Command line configuration.
+ */
+#include <config_cmd_default.h>
+#undef CONFIG_CMD_BDI
+#undef CONFIG_CMD_FPGA
+#undef CONFIG_CMD_IMI
+#undef CONFIG_CMD_IMLS
+#undef CONFIG_CMD_LOADS
+#undef CONFIG_CMD_SOURCE
+
+#define CONFIG_CMD_PING		1
+#define CONFIG_CMD_DHCP		1
+#define CONFIG_CMD_NAND		1
+#define CONFIG_CMD_USB		1
+
+/* SDRAM */
+#define CONFIG_NR_DRAM_BANKS		1
+#define PHYS_SDRAM			0x20000000
+#define PHYS_SDRAM_SIZE			0x04000000
+
+/* DataFlash */
+#define CONFIG_ATMEL_DATAFLASH_SPI
+#define CONFIG_HAS_DATAFLASH		        1
+#define CONFIG_SYS_SPI_WRITE_TOUT		(5*CONFIG_SYS_HZ)
+#define CONFIG_SYS_MAX_DATAFLASH_BANKS		1
+#define CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0	0xC0000000
+#define AT91_SPI_CLK			        8000000
+#define DATAFLASH_TCSS			        (0x1c << 16)
+#define DATAFLASH_TCHS			        (0x1 << 24)
+
+/* no NOR flash */
+#define CONFIG_SYS_NO_FLASH			1
+
+/* NAND flash */
+#ifdef CONFIG_CMD_NAND
+#define CONFIG_NAND_ATMEL
+#define CONFIG_SYS_MAX_NAND_DEVICE		1
+#define CONFIG_SYS_NAND_BASE			0x40000000
+#define CONFIG_SYS_NAND_DBW_8			1
+/* our ALE is AD21 */
+#define CONFIG_SYS_NAND_MASK_ALE		(1 << 21)
+/* our CLE is AD22 */
+#define CONFIG_SYS_NAND_MASK_CLE		(1 << 22)
+#define CONFIG_SYS_NAND_ENABLE_PIN		AT91_PIO_PORTD, 15
+#define CONFIG_SYS_NAND_READY_PIN		AT91_PIO_PORTA, 22
+#endif
+
+/* Ethernet */
+#define CONFIG_MACB			1
+#define CONFIG_RMII			1
+#define CONFIG_NET_MULTI		1
+#define CONFIG_NET_RETRY_COUNT		20
+#define CONFIG_MACB_SEARCH_PHY		1
+
+/* USB */
+#define CONFIG_USB_ATMEL
+#define CONFIG_USB_OHCI_NEW		        1
+#define CONFIG_DOS_PARTITION		        1
+#define CONFIG_SYS_USB_OHCI_CPU_INIT		1
+#define CONFIG_SYS_USB_OHCI_REGS_BASE		0x00a00000
+#define CONFIG_SYS_USB_OHCI_SLOT_NAME		"at91sam9263"
+#define CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS	2
+#define CONFIG_USB_STORAGE		        1
+#define CONFIG_CMD_FAT			        1
+
+#define CONFIG_SYS_LOAD_ADDR			0x22000000
+
+#define CONFIG_SYS_MEMTEST_START		PHYS_SDRAM
+#define CONFIG_SYS_MEMTEST_END			0x23e00000
+
+/* bootstrap + u-boot + env in dataflash on CS0 */
+#define CONFIG_ENV_IS_IN_DATAFLASH	1
+#define CONFIG_SYS_MONITOR_BASE	(CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0)
+#define CONFIG_ENV_OFFSET		0x2000
+#define CONFIG_ENV_ADDR		(CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0 + \
+				 CONFIG_ENV_OFFSET)
+#define CONFIG_ENV_SIZE		0x2000
+#define CONFIG_BOOTCOMMAND	"nboot 21000000 0"
+#define CONFIG_BOOTARGS		"console=ttyS0,115200 " \
+				"root=/dev/mtdblock1 " \
+				"mtdparts=atmel_nand:2m(kernel)ro,-(root) "\
+				"rw rootfstype=jffs2"
+
+#define CONFIG_BAUDRATE		115200
+#define CONFIG_SYS_BAUDRATE_TABLE	{115200 , 19200, 38400, 57600, 9600 }
+
+#define CONFIG_SYS_PROMPT		"U-Boot> "
+#define CONFIG_SYS_CBSIZE		256
+#define CONFIG_SYS_MAXARGS		16
+#define CONFIG_SYS_PBSIZE		(CONFIG_SYS_CBSIZE + \
+					 sizeof(CONFIG_SYS_PROMPT) + 16)
+#define CONFIG_SYS_LONGHELP		1
+#define CONFIG_CMDLINE_EDITING	1
+#define CONFIG_AUTO_COMPLETE
+#define CONFIG_SYS_HUSH_PARSER
+#define CONFIG_SYS_PROMPT_HUSH_PS2	"> "
+
+/*
+ * Size of malloc() pool
+ */
+#define CONFIG_SYS_MALLOC_LEN		ROUND(3 * CONFIG_ENV_SIZE + 128*1024, \
+					      0x1000)
+#define CONFIG_SYS_GBL_DATA_SIZE	128	/* 128 bytes for initial data */
+
+#define CONFIG_STACKSIZE	(32*1024)	/* regular stack */
+
+#ifdef CONFIG_USE_IRQ
+#error CONFIG_USE_IRQ not supported
+#endif
+
+#endif
-- 
1.7.0.4

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

* [U-Boot] [PATCH 1/4] Atmel Dataflash: convert to C struct accessors
  2010-06-07 21:56   ` [U-Boot] [PATCH 1/4] Atmel Dataflash: convert to C struct accessors Thomas Petazzoni
@ 2010-06-07 22:52     ` Mike Frysinger
  2010-06-08 12:24       ` Thomas Petazzoni
  0 siblings, 1 reply; 16+ messages in thread
From: Mike Frysinger @ 2010-06-07 22:52 UTC (permalink / raw)
  To: u-boot

On Monday, June 07, 2010 17:56:21 Thomas Petazzoni wrote:
> Instead of using the old-style base + offset accessors, use the new
> at91 C struct accessors.
> 
> The removal of #ifdef CONFIG_AT91_LEGACY allows to keep the definition
> of register values, needed to program the SPI.

i have to ask ... what exactly is the advantage of the dataflash driver over 
the common spi flash drivers ?  ive looked a bit and cant pick anything out.  
better to just scuttle the entire code base imo and unify consumers.
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20100607/238b752f/attachment.pgp 

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

* [U-Boot] [PATCH 1/4] Atmel Dataflash: convert to C struct accessors
  2010-06-07 22:52     ` Mike Frysinger
@ 2010-06-08 12:24       ` Thomas Petazzoni
  2010-06-08 19:20         ` Mike Frysinger
  0 siblings, 1 reply; 16+ messages in thread
From: Thomas Petazzoni @ 2010-06-08 12:24 UTC (permalink / raw)
  To: u-boot

On Mon, 7 Jun 2010 18:52:03 -0400
Mike Frysinger <vapier@gentoo.org> wrote:

> i have to ask ... what exactly is the advantage of the dataflash
> driver over the common spi flash drivers ?  ive looked a bit and cant
> pick anything out. better to just scuttle the entire code base imo
> and unify consumers.

I don't know the history of both drivers, but indeed it seems that the
AT91-custom dataflash driver should be replaced by the corresponding
SPI flash driver. I'll dig into this and see what I can do.

However, I only have a Calao USB-A9263 board and an Atmel AT91SAM9261EK
board here, so I won't be able to test on all Atmel evaluation boards.

Thomas
-- 
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: not available
Url : http://lists.denx.de/pipermail/u-boot/attachments/20100608/2ecbc8fd/attachment.pgp 

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

* [U-Boot] [PATCH 1/4] Atmel Dataflash: convert to C struct accessors
  2010-06-08 12:24       ` Thomas Petazzoni
@ 2010-06-08 19:20         ` Mike Frysinger
  2010-06-09  7:06           ` Thomas Petazzoni
  0 siblings, 1 reply; 16+ messages in thread
From: Mike Frysinger @ 2010-06-08 19:20 UTC (permalink / raw)
  To: u-boot

On Tuesday, June 08, 2010 08:24:33 Thomas Petazzoni wrote:
> On Mon, 7 Jun 2010 18:52:03 -0400 Mike Frysinger wrote:
> > i have to ask ... what exactly is the advantage of the dataflash
> > driver over the common spi flash drivers ?  ive looked a bit and cant
> > pick anything out. better to just scuttle the entire code base imo
> > and unify consumers.
> 
> I don't know the history of both drivers, but indeed it seems that the
> AT91-custom dataflash driver should be replaced by the corresponding
> SPI flash driver. I'll dig into this and see what I can do.

speaking historically, the dataflash code absolutely has its place.  it 
existed long before the SPI flash framework.  but i'm looking forward only 
now.

> However, I only have a Calao USB-A9263 board and an Atmel AT91SAM9261EK
> board here, so I won't be able to test on all Atmel evaluation boards.

i think the first step would be to convert the boards we can and leave a 
#warning for the rest that the dataflash code is being killed off.  then after 
some time, if no one has fixed the remainders, we do our best to convert them.
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20100608/0bfe4d18/attachment.pgp 

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

* [U-Boot] [PATCH 1/4] Atmel Dataflash: convert to C struct accessors
  2010-06-08 19:20         ` Mike Frysinger
@ 2010-06-09  7:06           ` Thomas Petazzoni
  2010-06-09 21:33             ` Mike Frysinger
  0 siblings, 1 reply; 16+ messages in thread
From: Thomas Petazzoni @ 2010-06-09  7:06 UTC (permalink / raw)
  To: u-boot

On Tue, 8 Jun 2010 15:20:57 -0400
Mike Frysinger <vapier@gentoo.org> wrote:

> speaking historically, the dataflash code absolutely has its place.
> it existed long before the SPI flash framework.  but i'm looking
> forward only now.

Yes, of course, understood.

However, the Dataflash aren't normal SPI flash, they don't have the
same opcodes. For example, drivers/mtd/spi/spi_flash.c assumes that it
can probe the "ID code" of the SPI flash by sending the CMD_READ_ID
(0x9F) command (in spi_flash_probe()). This works for SPI flashes, but
not for Dataflashes. The identification of Dataflashes takes place with
command GET_STATUS (0xD7) in drivers/mtd/at45.c, which has a different
return value than the 0x9F command of SPI flashes. Am I missing
something ?

In terms of code infrastructure/organization, how do you suggest to
handle this ?

> i think the first step would be to convert the boards we can and
> leave a #warning for the rest that the dataflash code is being killed
> off.  then after some time, if no one has fixed the remainders, we do
> our best to convert them. -mike

Ok.

Thomas
-- 
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: not available
Url : http://lists.denx.de/pipermail/u-boot/attachments/20100609/7503683b/attachment.pgp 

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

* [U-Boot] [PATCH 1/4] Atmel Dataflash: convert to C struct accessors
  2010-06-09  7:06           ` Thomas Petazzoni
@ 2010-06-09 21:33             ` Mike Frysinger
  0 siblings, 0 replies; 16+ messages in thread
From: Mike Frysinger @ 2010-06-09 21:33 UTC (permalink / raw)
  To: u-boot

On Wednesday, June 09, 2010 03:06:26 Thomas Petazzoni wrote:
> On Tue, 8 Jun 2010 15:20:57 -0400 Mike Frysinger wrote:
> > speaking historically, the dataflash code absolutely has its place.
> > it existed long before the SPI flash framework.  but i'm looking
> > forward only now.
> 
> Yes, of course, understood.
> 
> However, the Dataflash aren't normal SPI flash, they don't have the
> same opcodes. For example, drivers/mtd/spi/spi_flash.c assumes that it
> can probe the "ID code" of the SPI flash by sending the CMD_READ_ID
> (0x9F) command (in spi_flash_probe()). This works for SPI flashes, but
> not for Dataflashes. The identification of Dataflashes takes place with
> command GET_STATUS (0xD7) in drivers/mtd/at45.c, which has a different
> return value than the 0x9F command of SPI flashes. Am I missing
> something ?

i see drivers/mtd/spi/atmel.c with all the same IDs as drivers/mtd/dataflash.c 
so presumably it works.  i also vaguely recall having tested one or two myself 
with the SPI flash subsystem.

according to the datasheet for the AT45DB642D, 0x9F is the "get the ID code" 
while 0xDF is the "get flash status".  i dont see how you can get the flash id 
info out of the flash status register.  perhaps you're confusing the code 
bases ?
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20100609/9b4217e4/attachment.pgp 

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

end of thread, other threads:[~2010-06-09 21:33 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-06-02 16:04 [U-Boot] [PATCH 0/4] Support for board Calao USB A9263 Thomas Petazzoni
2010-06-02 16:04 ` [U-Boot] [PATCH 1/4] Atmel Dataflash: convert to C struct accessors Thomas Petazzoni
2010-06-02 16:04 ` [U-Boot] [PATCH 2/4] at91_spi: remove register offsets Thomas Petazzoni
2010-06-02 16:04 ` [U-Boot] [PATCH 3/4] at91sam9263: add new style definition for SPI0_BASE Thomas Petazzoni
2010-06-02 16:04 ` [U-Boot] [PATCH 4/4] Support for Calao USB A9263 board based on AT91SAM9263 CPU Thomas Petazzoni
2010-06-07 12:40 ` [U-Boot] [PATCH 0/4] Support for board Calao USB A9263 Tom Rix
2010-06-07 21:56   ` [U-Boot] [PATCH 0/4] Calao USB-A9263 v2 Thomas Petazzoni
2010-06-07 21:56   ` [U-Boot] [PATCH 1/4] Atmel Dataflash: convert to C struct accessors Thomas Petazzoni
2010-06-07 22:52     ` Mike Frysinger
2010-06-08 12:24       ` Thomas Petazzoni
2010-06-08 19:20         ` Mike Frysinger
2010-06-09  7:06           ` Thomas Petazzoni
2010-06-09 21:33             ` Mike Frysinger
2010-06-07 21:56   ` [U-Boot] [PATCH 2/4] at91_spi: remove register offsets Thomas Petazzoni
2010-06-07 21:56   ` [U-Boot] [PATCH 3/4] Add new style definition for SPI0_BASE Thomas Petazzoni
2010-06-07 21:56   ` [U-Boot] [PATCH 4/4] Support for Calao USB A9263 board based on AT91SAM9263 CPU Thomas Petazzoni

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.