[U-Boot] [PATCH v3 3/5] nitrogen6x: reserve used gpios

Troy Kisky troy.kisky at boundarydevices.com
Mon Jul 29 19:15:56 UTC 2019


This prevents messages like
gpio at 20a0000: get_value: error: gpio GPIO2_2 not reserved

when CONFIG_DM_GPIO is enabled.

Also, when CONFIG_DM_GPIO is enabled, checkboard is too
early to use gpio_get_value, so read it directly on failure.

Signed-off-by: Troy Kisky <troy.kisky at boundarydevices.com>
---
 board/boundary/nitrogen6x/nitrogen6x.c | 30 +++++++++++++++++++++++++-
 1 file changed, 29 insertions(+), 1 deletion(-)

diff --git a/board/boundary/nitrogen6x/nitrogen6x.c b/board/boundary/nitrogen6x/nitrogen6x.c
index 867eade4bd..4785a37c6a 100644
--- a/board/boundary/nitrogen6x/nitrogen6x.c
+++ b/board/boundary/nitrogen6x/nitrogen6x.c
@@ -381,6 +381,15 @@ int board_eth_init(bd_t *bis)
 	struct phy_device *phydev = NULL;
 	int ret;
 
+	gpio_request(WL12XX_WL_IRQ_GP, "wifi_irq");
+	gpio_request(IMX_GPIO_NR(6, 30), "rgmii_rxc");
+	gpio_request(IMX_GPIO_NR(6, 25), "rgmii_rd0");
+	gpio_request(IMX_GPIO_NR(6, 27), "rgmii_rd1");
+	gpio_request(IMX_GPIO_NR(6, 28), "rgmii_rd2");
+	gpio_request(IMX_GPIO_NR(6, 29), "rgmii_rd3");
+	gpio_request(IMX_GPIO_NR(6, 24), "rgmii_rx_ctl");
+	gpio_request(IMX_GPIO_NR(3, 23), "rgmii_reset_sabrelite");
+	gpio_request(IMX_GPIO_NR(1, 27), "rgmii_reset_nitrogen6x");
 	setup_iomux_enet();
 
 #ifdef CONFIG_FEC_MXC
@@ -911,7 +920,16 @@ int board_init(void)
 
 int checkboard(void)
 {
-	if (gpio_get_value(WL12XX_WL_IRQ_GP))
+	int ret = gpio_get_value(WL12XX_WL_IRQ_GP);
+
+	if (ret < 0) {
+		/* The gpios have not been probed yet. Read it myself */
+		struct gpio_regs *regs = (struct gpio_regs *)GPIO6_BASE_ADDR;
+		int gpio = WL12XX_WL_IRQ_GP & 0x1f;
+
+		ret = (readl(&regs->gpio_psr) >> gpio) & 0x01;
+	}
+	if (ret)
 		puts("Board: Nitrogen6X\n");
 	else
 		puts("Board: SABRE Lite\n");
@@ -1013,6 +1031,16 @@ static const struct boot_mode board_boot_modes[] = {
 
 int misc_init_r(void)
 {
+	gpio_request(RGB_BACKLIGHT_GP, "lvds backlight");
+	gpio_request(LVDS_BACKLIGHT_GP, "lvds backlight");
+	gpio_request(GP_USB_OTG_PWR, "usbotg power");
+	gpio_request(IMX_GPIO_NR(7, 12), "usbh1 hub reset");
+	gpio_request(IMX_GPIO_NR(2, 2), "back");
+	gpio_request(IMX_GPIO_NR(2, 4), "home");
+	gpio_request(IMX_GPIO_NR(2, 1), "menu");
+	gpio_request(IMX_GPIO_NR(2, 3), "search");
+	gpio_request(IMX_GPIO_NR(7, 13), "volup");
+	gpio_request(IMX_GPIO_NR(4, 5), "voldown");
 #ifdef CONFIG_PREBOOT
 	preboot_keys();
 #endif
-- 
2.18.0



More information about the U-Boot mailing list