From: Pascal Linder Date: Tue, 18 Jun 2019 06:41:02 +0000 (+0200) Subject: km/spi: overwrite kirkwood_spi weak functions for KM Kirkwood boards X-Git-Tag: v2019.10-rc1~33^2~4 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=53c3050d0dd3f885c35f5c44293c86a9b199c5ca;p=oweals%2Fu-boot.git km/spi: overwrite kirkwood_spi weak functions for KM Kirkwood boards As the SPI NOR and NAND devices share the same hardware pins, the MPP configuration has to be changed when claiming/releasing the bus. The current configuration is saved when claiming and restored when releasing. Furthermore, a general-purpose output is used to switch the chip-select signal. This is now also implemented for the DM part of the kirkwood_spi driver. Signed-off-by: Pascal Linder Signed-off-by: Holger Brunck Signed-off-by: Stefan Roese --- diff --git a/board/keymile/km_arm/km_arm.c b/board/keymile/km_arm/km_arm.c index ea03be9eb3..7087cc520f 100644 --- a/board/keymile/km_arm/km_arm.c +++ b/board/keymile/km_arm/km_arm.c @@ -322,6 +322,37 @@ void board_spi_release_bus(struct spi_slave *slave) kw_gpio_set_value(KM_FLASH_GPIO_PIN, 1); } +static const u32 spi_mpp_config[] = { + MPP1_SPI_MOSI, + MPP2_SPI_SCK, + MPP3_SPI_MISO, + 0 +}; + +static u32 spi_mpp_backup[4]; + +int mvebu_board_spi_claim_bus(struct udevice *dev) +{ + spi_mpp_backup[3] = 0; + + /* set new spi mpp config and save current one */ + kirkwood_mpp_conf(spi_mpp_config, spi_mpp_backup); + + kw_gpio_set_value(KM_FLASH_GPIO_PIN, 0); + + return 0; +} + +int mvebu_board_spi_release_bus(struct udevice *dev) +{ + /* restore saved mpp config */ + kirkwood_mpp_conf(spi_mpp_backup, NULL); + + kw_gpio_set_value(KM_FLASH_GPIO_PIN, 1); + + return 0; +} + #if (defined(CONFIG_KM_PIGGY4_88E6061)) #define PHY_LED_SEL_REG 0x18