|
|
|
@ -3,7 +3,7 @@ |
|
|
|
|
* |
|
|
|
|
* Enter bugs at http://blackfin.uclinux.org/
|
|
|
|
|
* |
|
|
|
|
* Copyright (c) 2005-2007 Analog Devices Inc. |
|
|
|
|
* Copyright (c) 2005-2008 Analog Devices Inc. |
|
|
|
|
* |
|
|
|
|
* Licensed under the GPL-2 or later. |
|
|
|
|
*/ |
|
|
|
@ -163,7 +163,9 @@ static struct manufacturer_info flash_manufacturers[] = { |
|
|
|
|
|
|
|
|
|
#define TIMEOUT 5000 /* timeout of 5 seconds */ |
|
|
|
|
|
|
|
|
|
/* BF54x support */ |
|
|
|
|
/* If part has multiple SPI flashes, assume SPI0 as that is
|
|
|
|
|
* the one we can boot off of ... |
|
|
|
|
*/ |
|
|
|
|
#ifndef pSPI_CTL |
|
|
|
|
# define pSPI_CTL pSPI0_CTL |
|
|
|
|
# define pSPI_BAUD pSPI0_BAUD |
|
|
|
@ -171,19 +173,16 @@ static struct manufacturer_info flash_manufacturers[] = { |
|
|
|
|
# define pSPI_RDBR pSPI0_RDBR |
|
|
|
|
# define pSPI_STAT pSPI0_STAT |
|
|
|
|
# define pSPI_TDBR pSPI0_TDBR |
|
|
|
|
# define SPI0_SCK 0x0001 |
|
|
|
|
# define SPI0_MOSI 0x0004 |
|
|
|
|
# define SPI0_MISO 0x0002 |
|
|
|
|
# define SPI0_SEL1 0x0010 |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
/* Default to the SPI SSEL that we boot off of:
|
|
|
|
|
* BF54x, BF537, (everything new?): SSEL1 |
|
|
|
|
* BF533, BF561: SSEL2 |
|
|
|
|
* BF51x, BF533, BF561: SSEL2 |
|
|
|
|
*/ |
|
|
|
|
#ifndef CONFIG_SPI_FLASH_SSEL |
|
|
|
|
# if defined(__ADSPBF531__) || defined(__ADSPBF532__) || defined(__ADSPBF533__) || \ |
|
|
|
|
defined(__ADSPBF538__) || defined(__ADSPBF539__) || defined(__ADSPBF561__) |
|
|
|
|
defined(__ADSPBF538__) || defined(__ADSPBF539__) || defined(__ADSPBF561__) || \
|
|
|
|
|
defined(__ADSPBF51x__) |
|
|
|
|
# define CONFIG_SPI_FLASH_SSEL 2 |
|
|
|
|
# else |
|
|
|
|
# define CONFIG_SPI_FLASH_SSEL 1 |
|
|
|
@ -200,12 +199,15 @@ static void SPI_INIT(void) |
|
|
|
|
|
|
|
|
|
/* enable SPI pins: SSEL, MOSI, MISO, SCK */ |
|
|
|
|
#ifdef __ADSPBF54x__ |
|
|
|
|
*pPORTE_FER |= (SPI0_SCK | SPI0_MOSI | SPI0_MISO | SPI0_SEL1); |
|
|
|
|
*pPORTE_FER |= (PE0 | PE1 | PE2 | PE4); |
|
|
|
|
#elif defined(__ADSPBF534__) || defined(__ADSPBF536__) || defined(__ADSPBF537__) |
|
|
|
|
*pPORTF_FER |= (PF10 | PF11 | PF12 | PF13); |
|
|
|
|
#elif defined(__ADSPBF52x__) |
|
|
|
|
bfin_write_PORTG_MUX((bfin_read_PORTG_MUX() & ~PORT_x_MUX_0_MASK) | PORT_x_MUX_0_FUNC_3); |
|
|
|
|
bfin_write_PORTG_FER(bfin_read_PORTG_FER() | PG1 | PG2 | PG3 | PG4); |
|
|
|
|
#elif defined(__ADSPBF51x__) |
|
|
|
|
bfin_write_PORTG_MUX((bfin_read_PORTG_MUX() & ~PORT_x_MUX_7_MASK) | PORT_x_MUX_7_FUNC_1); |
|
|
|
|
bfin_write_PORTG_FER(bfin_read_PORTG_FER() | PG12 | PG13 | PG14 | PG15); |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
/* initate communication upon write of TDBR */ |
|
|
|
|