All of lore.kernel.org
 help / color / mirror / Atom feed
From: Valentin Longchamp <valentin.longchamp@keymile.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 02/20] arm/km: use correct kw_gpio function for NAND/SPI switching
Date: Thu,  7 Jun 2012 12:06:42 +0200	[thread overview]
Message-ID: <1339063620-8890-3-git-send-email-valentin.longchamp@keymile.com> (raw)
In-Reply-To: <1339063620-8890-1-git-send-email-valentin.longchamp@keymile.com>

This used to be done with registers direct access, which is not clear
and optimal.

Signed-off-by: Valentin Longchamp <valentin.longchamp@keymile.com>
Signed-off-by: Holger Brunck <holger.brunck@keymile.com>
cc: Gerlando Falauto <gerlando.falauto@keymile.com>
cc: Prafulla Wadaskar <prafulla@marvell.com>
---
 board/keymile/km_arm/km_arm.c |   53 +++++++++++++++++++++-------------------
 include/configs/km/km_arm.h   |    1 +
 2 files changed, 29 insertions(+), 25 deletions(-)

diff --git a/board/keymile/km_arm/km_arm.c b/board/keymile/km_arm/km_arm.c
index ed12b5c..e4ae1fb 100644
--- a/board/keymile/km_arm/km_arm.c
+++ b/board/keymile/km_arm/km_arm.c
@@ -247,15 +247,12 @@ int board_early_init_f(void)
 	kirkwood_mpp_conf(kwmpp_config, NULL);
 
 	/*
-	 * The FLASH_GPIO_PIN switches between using a
+	 * The KM_FLASH_GPIO_PIN switches between using a
 	 * NAND or a SPI FLASH. Set this pin on start
 	 * to NAND mode.
 	 */
-	tmp = readl(KW_GPIO0_BASE);
-	writel(tmp | FLASH_GPIO_PIN , KW_GPIO0_BASE);
-	tmp = readl(KW_GPIO0_BASE + 4);
-	writel(tmp & (~FLASH_GPIO_PIN) , KW_GPIO0_BASE + 4);
-
+	kw_gpio_set_valid(KM_FLASH_GPIO_PIN, 1);
+	kw_gpio_direction_output(KM_FLASH_GPIO_PIN, 1);
 #if defined(CONFIG_SOFT_I2C)
 	/* init the GPIO for I2C Bitbang driver */
 	kw_gpio_set_valid(KM_KIRKWOOD_SDA_PIN, 1);
@@ -284,35 +281,41 @@ int board_init(void)
 	return 0;
 }
 
+int km_hw_spi_bus_claim(int on)
+{
+	int gpio_value = !on;
+
+	if (on) {
+		kwmpp_config[0] = MPP0_SPI_SCn;
+		kwmpp_config[1] = MPP1_SPI_MOSI;
+		kwmpp_config[2] = MPP2_SPI_SCK;
+		kwmpp_config[3] = MPP3_SPI_MISO;
+	} else {
+		kwmpp_config[0] = MPP0_NF_IO2;
+		kwmpp_config[1] = MPP1_NF_IO3;
+		kwmpp_config[2] = MPP2_NF_IO4;
+		kwmpp_config[3] = MPP3_NF_IO5;
+	}
+
+	/* Multi-Purpose Pins Functionality configuration */
+	kirkwood_mpp_conf(kwmpp_config, NULL);
+	kw_gpio_set_value(KM_FLASH_GPIO_PIN, gpio_value);
+
+	return 0;
+}
+
 #if defined(CONFIG_CMD_SF)
 int do_spi_toggle(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
-	u32 tmp;
 	if (argc < 2)
 		return cmd_usage(cmdtp);
 
 	if ((strcmp(argv[1], "off") == 0)) {
 		printf("SPI FLASH disabled, NAND enabled\n");
-		/* Multi-Purpose Pins Functionality configuration */
-		kwmpp_config[0] = MPP0_NF_IO2;
-		kwmpp_config[1] = MPP1_NF_IO3;
-		kwmpp_config[2] = MPP2_NF_IO4;
-		kwmpp_config[3] = MPP3_NF_IO5;
-
-		kirkwood_mpp_conf(kwmpp_config, NULL);
-		tmp = readl(KW_GPIO0_BASE);
-		writel(tmp | FLASH_GPIO_PIN , KW_GPIO0_BASE);
+		km_hw_spi_bus_claim(0);
 	} else if ((strcmp(argv[1], "on") == 0)) {
 		printf("SPI FLASH enabled, NAND disabled\n");
-		/* Multi-Purpose Pins Functionality configuration */
-		kwmpp_config[0] = MPP0_SPI_SCn;
-		kwmpp_config[1] = MPP1_SPI_MOSI;
-		kwmpp_config[2] = MPP2_SPI_SCK;
-		kwmpp_config[3] = MPP3_SPI_MISO;
-
-		kirkwood_mpp_conf(kwmpp_config, NULL);
-		tmp = readl(KW_GPIO0_BASE);
-		writel(tmp & (~FLASH_GPIO_PIN) , KW_GPIO0_BASE);
+		km_hw_spi_bus_claim(1);
 	} else {
 		return cmd_usage(cmdtp);
 	}
diff --git a/include/configs/km/km_arm.h b/include/configs/km/km_arm.h
index 056bf53..28b5021 100644
--- a/include/configs/km/km_arm.h
+++ b/include/configs/km/km_arm.h
@@ -231,6 +231,7 @@ int get_scl(void);
 #define CONFIG_SYS_KW_SPI_MPP	0x0
 
 #define FLASH_GPIO_PIN			0x00010000
+#define KM_FLASH_GPIO_PIN	16
 
 #define MTDIDS_DEFAULT		"nand0=orion_nand"
 /* test-only: partitioning needs some tuning, this is just for tests */
-- 
1.7.1

  parent reply	other threads:[~2012-06-07 10:06 UTC|newest]

Thread overview: 62+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-06-07 10:06 [U-Boot] [PATCH 00/20] updates for Keymile Marvell boards Valentin Longchamp
2012-06-07 10:06 ` [U-Boot] [PATCH 01/20] arm/km: enable spi claim bus Valentin Longchamp
2012-06-07 10:06 ` Valentin Longchamp [this message]
2012-06-12  4:39   ` [U-Boot] [PATCH 02/20] arm/km: use correct kw_gpio function for NAND/SPI switching Prafulla Wadaskar
2012-06-12  8:38     ` Holger Brunck
2012-06-12  9:32       ` Prafulla Wadaskar
2012-06-12 10:29         ` Holger Brunck
2012-06-13 12:16           ` Holger Brunck
2012-06-07 10:06 ` [U-Boot] [PATCH 03/20] arm/kirkwood: protect the ENV_SPI #defines Valentin Longchamp
2012-06-07 10:06 ` [U-Boot] [PATCH 04/20] arm/km: add kmnusa board support Valentin Longchamp
2012-06-12  4:39   ` Prafulla Wadaskar
2012-06-12  8:34     ` Holger Brunck
2012-06-12  9:40       ` Prafulla Wadaskar
2012-06-12 10:30         ` Holger Brunck
2012-06-12  9:45       ` Prafulla Wadaskar
2012-06-12  9:57       ` Prafulla Wadaskar
2012-06-12 10:37         ` Holger Brunck
2012-06-12 11:09           ` Prafulla Wadaskar
2012-06-12 11:43             ` Holger Brunck
2012-06-12 11:50               ` Prafulla Wadaskar
2012-06-12 15:20                 ` Holger Brunck
2012-06-07 10:06 ` [U-Boot] [PATCH 05/20] arm/km: add kmcoge5un " Valentin Longchamp
2012-06-12  4:39   ` Prafulla Wadaskar
2012-06-07 10:06 ` [U-Boot] [PATCH 06/20] arm/km: convert mgcoge3un target to km_kirkwood Valentin Longchamp
2012-06-07 10:06 ` [U-Boot] [PATCH 07/20] arm/km: remove portl2.h and use km_kirkwood instead Valentin Longchamp
2012-06-07 10:06 ` [U-Boot] [PATCH 08/20] arm/km: correct init of 88e6352 switch in the reset_phy function Valentin Longchamp
2012-06-07 10:06 ` [U-Boot] [PATCH 09/20] arm/km: enable BOCO2 FPGA download support Valentin Longchamp
2012-06-07 10:06 ` [U-Boot] [PATCH 10/20] arm/km: cleanup km_kirkwood boards Valentin Longchamp
2012-06-12  4:39   ` Prafulla Wadaskar
2012-06-12  8:15     ` Holger Brunck
2012-06-07 10:06 ` [U-Boot] [PATCH 11/20] arm/km: redefine piggy 4 reg names to avoid conflicts Valentin Longchamp
2012-06-07 10:06 ` [U-Boot] [PATCH 12/20] arm/km: add support for external switch configuration Valentin Longchamp
2012-06-12  4:39   ` Prafulla Wadaskar
2012-06-21 13:09     ` [U-Boot] [PATCH 12/20] arm/km: add support for external switchconfiguration Valentin Longchamp
2012-07-03  8:17       ` Prafulla Wadaskar
2012-07-03  9:51         ` Valentin Longchamp
2012-07-04  8:07           ` Detlev Zundel
2012-07-04  9:20             ` Prafulla Wadaskar
2012-07-09 12:04               ` Holger Brunck
2012-07-09 12:31                 ` Wolfgang Denk
2012-07-09 12:50                   ` Detlev Zundel
2012-07-09 19:29                     ` Wolfgang Denk
2012-07-09 13:06                   ` Detlev Zundel
2012-07-09 14:44                     ` Holger Brunck
2012-07-09 19:44                       ` Wolfgang Denk
2012-07-09 19:32                     ` Wolfgang Denk
2012-07-16 16:55                       ` Detlev Zundel
2012-07-09 20:42                 ` Prafulla Wadaskar
2012-07-10 19:33                   ` Joe Hershberger
2012-07-09 14:31               ` Detlev Zundel
2012-07-09 14:40                 ` Valentin Longchamp
2012-07-10 10:18                 ` Prafulla Wadaskar
2012-06-07 10:06 ` [U-Boot] [PATCH 13/20] arm/km: enable external switch configuration for kmnusa Valentin Longchamp
2012-06-07 10:06 ` [U-Boot] [PATCH 14/20] arm/km: skip FPGA config when already configured Valentin Longchamp
2012-06-07 10:06 ` [U-Boot] [PATCH 15/20] arm/km: support the 2 PCIe fpga resets Valentin Longchamp
2012-06-07 10:06 ` [U-Boot] [PATCH 16/20] arm/km: add implementation for read_dip_switch Valentin Longchamp
2012-06-07 10:06 ` [U-Boot] [PATCH 17/20] arm/km: fix testpin detection for kmcoge5un Valentin Longchamp
2012-06-07 10:06 ` [U-Boot] [PATCH 18/20] arm/km: implement weak function board_spi_clam_bus/release Valentin Longchamp
2012-06-07 10:06 ` [U-Boot] [PATCH 19/20] arm/km: remove spi toggle command Valentin Longchamp
2012-06-07 10:07 ` [U-Boot] [PATCH 20/20] arm/km: remove calls to kw_gpio_* in board_early_init_f Valentin Longchamp
2012-06-12  7:58   ` Prafulla Wadaskar
2012-06-12  8:43     ` Holger Brunck

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1339063620-8890-3-git-send-email-valentin.longchamp@keymile.com \
    --to=valentin.longchamp@keymile.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.