mirror of
https://github.com/libretro/Lakka-LibreELEC.git
synced 2025-03-01 05:41:22 +00:00
66 lines
2.1 KiB
Diff
66 lines
2.1 KiB
Diff
From: Andre Przywara <andre.przywara@arm.com>
|
|
Subject: [PATCH] sunxi: Properly check for SATAPWR and MACPWR
|
|
Date: Tue, 19 Jan 2021 01:05:20 +0000
|
|
|
|
The #ifdef CONFIG_xxxPWR conditionals were not working as expected, as
|
|
string Kconfig symbols are always "defined" from the preprocessor's
|
|
perspective. This lead to unnecessary calls to the GPIO routines, but
|
|
also always added a half a second delay to wait for a SATA disk to power
|
|
up. Many thanks to Peter for pointing this out!
|
|
|
|
Fix this by properly comparing the Kconfig symbols against the empty
|
|
string. strcmp() would be nicer for this, but GCC does not optimise this
|
|
away, probably due to our standalone compiler switches.
|
|
|
|
Reported-by: Peter Robinson <pbrobinson@gmail.com>
|
|
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
|
|
Tested-by: Samuel Holland <samuel@sholland.org> # Orange Pi WinPlus
|
|
Tested-by: Peter Robinson <pbrobinson@gmail.com>
|
|
---
|
|
board/sunxi/board.c | 34 ++++++++++++++++++++++------------
|
|
1 file changed, 22 insertions(+), 12 deletions(-)
|
|
|
|
--- a/board/sunxi/board.c
|
|
+++ b/board/sunxi/board.c
|
|
@@ -264,18 +264,28 @@ int board_init(void)
|
|
if (ret)
|
|
return ret;
|
|
|
|
-#ifdef CONFIG_SATAPWR
|
|
- satapwr_pin = sunxi_name_to_gpio(CONFIG_SATAPWR);
|
|
- gpio_request(satapwr_pin, "satapwr");
|
|
- gpio_direction_output(satapwr_pin, 1);
|
|
- /* Give attached sata device time to power-up to avoid link timeouts */
|
|
- mdelay(500);
|
|
-#endif
|
|
-#ifdef CONFIG_MACPWR
|
|
- macpwr_pin = sunxi_name_to_gpio(CONFIG_MACPWR);
|
|
- gpio_request(macpwr_pin, "macpwr");
|
|
- gpio_direction_output(macpwr_pin, 1);
|
|
-#endif
|
|
+ /* strcmp() would look better, but doesn't get optimised away. */
|
|
+ if (CONFIG_SATAPWR[0]) {
|
|
+ satapwr_pin = sunxi_name_to_gpio(CONFIG_SATAPWR);
|
|
+ if (satapwr_pin >= 0) {
|
|
+ gpio_request(satapwr_pin, "satapwr");
|
|
+ gpio_direction_output(satapwr_pin, 1);
|
|
+
|
|
+ /*
|
|
+ * Give the attached SATA device time to power-up
|
|
+ * to avoid link timeouts
|
|
+ */
|
|
+ mdelay(500);
|
|
+ }
|
|
+ }
|
|
+
|
|
+ if (CONFIG_MACPWR[0]) {
|
|
+ macpwr_pin = sunxi_name_to_gpio(CONFIG_MACPWR);
|
|
+ if (macpwr_pin >= 0) {
|
|
+ gpio_request(macpwr_pin, "macpwr");
|
|
+ gpio_direction_output(macpwr_pin, 1);
|
|
+ }
|
|
+ }
|
|
|
|
#ifdef CONFIG_DM_I2C
|
|
/*
|