spi: kirkwood_spi.c: Compile MPP (pin-mux) only for kirkwood SoC's
Compile the pin multiplexing only on Kirkwood platforms. As the Armada XP doesn't need it. Signed-off-by: Stefan Roese <sr@denx.de> Reviewed-by: Jagannadha Sutradharudu Teki <jaganna@xilinx.com> Tested-by: Luka Perkov <luka@openwrt.org> Acked-by: Prafulla Wadaskar <prafulla@marvell.com>
This commit is contained in:
parent
24c04977fa
commit
4aceea2088
|
@ -13,22 +13,28 @@
|
||||||
#include <spi.h>
|
#include <spi.h>
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
#include <asm/arch/soc.h>
|
#include <asm/arch/soc.h>
|
||||||
|
#ifdef CONFIG_KIRKWOOD
|
||||||
#include <asm/arch/mpp.h>
|
#include <asm/arch/mpp.h>
|
||||||
|
#endif
|
||||||
#include <asm/arch-mvebu/spi.h>
|
#include <asm/arch-mvebu/spi.h>
|
||||||
|
|
||||||
static struct kwspi_registers *spireg = (struct kwspi_registers *)KW_SPI_BASE;
|
static struct kwspi_registers *spireg = (struct kwspi_registers *)KW_SPI_BASE;
|
||||||
|
|
||||||
|
#ifdef CONFIG_KIRKWOOD
|
||||||
static u32 cs_spi_mpp_back[2];
|
static u32 cs_spi_mpp_back[2];
|
||||||
|
#endif
|
||||||
|
|
||||||
struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
|
struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
|
||||||
unsigned int max_hz, unsigned int mode)
|
unsigned int max_hz, unsigned int mode)
|
||||||
{
|
{
|
||||||
struct spi_slave *slave;
|
struct spi_slave *slave;
|
||||||
u32 data;
|
u32 data;
|
||||||
|
#ifdef CONFIG_KIRKWOOD
|
||||||
static const u32 kwspi_mpp_config[2][2] = {
|
static const u32 kwspi_mpp_config[2][2] = {
|
||||||
{ MPP0_SPI_SCn, 0 }, /* if cs == 0 */
|
{ MPP0_SPI_SCn, 0 }, /* if cs == 0 */
|
||||||
{ MPP7_SPI_SCn, 0 } /* if cs != 0 */
|
{ MPP7_SPI_SCn, 0 } /* if cs != 0 */
|
||||||
};
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
if (!spi_cs_is_valid(bus, cs))
|
if (!spi_cs_is_valid(bus, cs))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -51,15 +57,19 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
|
||||||
writel(KWSPI_SMEMRDIRQ, &spireg->irq_cause);
|
writel(KWSPI_SMEMRDIRQ, &spireg->irq_cause);
|
||||||
writel(KWSPI_IRQMASK, &spireg->irq_mask);
|
writel(KWSPI_IRQMASK, &spireg->irq_mask);
|
||||||
|
|
||||||
|
#ifdef CONFIG_KIRKWOOD
|
||||||
/* program mpp registers to select SPI_CSn */
|
/* program mpp registers to select SPI_CSn */
|
||||||
kirkwood_mpp_conf(kwspi_mpp_config[cs ? 1 : 0], cs_spi_mpp_back);
|
kirkwood_mpp_conf(kwspi_mpp_config[cs ? 1 : 0], cs_spi_mpp_back);
|
||||||
|
#endif
|
||||||
|
|
||||||
return slave;
|
return slave;
|
||||||
}
|
}
|
||||||
|
|
||||||
void spi_free_slave(struct spi_slave *slave)
|
void spi_free_slave(struct spi_slave *slave)
|
||||||
{
|
{
|
||||||
|
#ifdef CONFIG_KIRKWOOD
|
||||||
kirkwood_mpp_conf(cs_spi_mpp_back, NULL);
|
kirkwood_mpp_conf(cs_spi_mpp_back, NULL);
|
||||||
|
#endif
|
||||||
free(slave);
|
free(slave);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue