Blackfin: add BF538/BF539 SPI portmux handling
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
This commit is contained in:
parent
46ac352f0f
commit
bc72f50a65
@ -36,6 +36,11 @@ MAKE_SPI_FUNC(SPI_BAUD, 0x14)
|
|||||||
__attribute__((weak))
|
__attribute__((weak))
|
||||||
int spi_cs_is_valid(unsigned int bus, unsigned int cs)
|
int spi_cs_is_valid(unsigned int bus, unsigned int cs)
|
||||||
{
|
{
|
||||||
|
#if defined(__ADSPBF538__) || defined(__ADSPBF539__)
|
||||||
|
/* The SPI1/SPI2 buses are weird ... only 1 CS */
|
||||||
|
if (bus > 0 && cs != 1)
|
||||||
|
return 0;
|
||||||
|
#endif
|
||||||
return (cs >= 1 && cs <= 7);
|
return (cs >= 1 && cs <= 7);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -204,6 +209,19 @@ static void spi_portmux(struct spi_slave *slave)
|
|||||||
}
|
}
|
||||||
bfin_write_PORT_MUX(mux);
|
bfin_write_PORT_MUX(mux);
|
||||||
bfin_write_PORTF_FER(f_fer);
|
bfin_write_PORTF_FER(f_fer);
|
||||||
|
#elif defined(__ADSPBF538__) || defined(__ADSPBF539__)
|
||||||
|
u16 fer, pins;
|
||||||
|
if (slave->bus == 1)
|
||||||
|
pins = PD0 | PD1 | PD2 | (slave->cs == 1 ? PD4 : 0);
|
||||||
|
else if (slave->bus == 2)
|
||||||
|
pins = PD5 | PD6 | PD7 | (slave->cs == 1 ? PD9 : 0);
|
||||||
|
else
|
||||||
|
pins = 0;
|
||||||
|
if (pins) {
|
||||||
|
fer = bfin_read_PORTDIO_FER();
|
||||||
|
fer &= ~pins;
|
||||||
|
bfin_write_PORTDIO_FER(fer);
|
||||||
|
}
|
||||||
#elif defined(__ADSPBF54x__)
|
#elif defined(__ADSPBF54x__)
|
||||||
#define DO_MUX(port, pin) \
|
#define DO_MUX(port, pin) \
|
||||||
mux = ((mux & ~PORT_x_MUX_##pin##_MASK) | PORT_x_MUX_##pin##_FUNC_1); \
|
mux = ((mux & ~PORT_x_MUX_##pin##_MASK) | PORT_x_MUX_##pin##_FUNC_1); \
|
||||||
|
Loading…
Reference in New Issue
Block a user