summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--configs/platform-v7a/barebox-am335x-mlo.config1
-rw-r--r--configs/platform-v7a/barebox-am335x.config1
-rw-r--r--configs/platform-v7a/barebox-am335x.config.diff2
-rw-r--r--configs/platform-v7a/barebox-at91.config1
-rw-r--r--configs/platform-v7a/barebox-at91.config.diff2
-rw-r--r--configs/platform-v7a/barebox-mx6.config1
-rw-r--r--configs/platform-v7a/barebox-mx6.config.diff2
-rw-r--r--configs/platform-v7a/barebox-rpi2.config1
-rw-r--r--configs/platform-v7a/barebox-rpi2.config.diff2
-rw-r--r--configs/platform-v7a/barebox-stm32mp.config1
-rw-r--r--configs/platform-v7a/barebox-stm32mp.config.diff2
-rw-r--r--configs/platform-v7a/barebox-vexpress.config1
-rw-r--r--configs/platform-v7a/barebox-vexpress.config.diff2
-rw-r--r--configs/platform-v7a/barebox.config1
-rw-r--r--configs/platform-v7a/patches/barebox-2022.06.0/0001-mci-add-new-MCI_BROKEN_CD-option-for-testing.patch122
-rw-r--r--configs/platform-v7a/patches/barebox-2022.06.0/series1
16 files changed, 137 insertions, 6 deletions
diff --git a/configs/platform-v7a/barebox-am335x-mlo.config b/configs/platform-v7a/barebox-am335x-mlo.config
index 8d01f85..14f2e1e 100644
--- a/configs/platform-v7a/barebox-am335x-mlo.config
+++ b/configs/platform-v7a/barebox-am335x-mlo.config
@@ -299,6 +299,7 @@ CONFIG_MCI=y
# CONFIG_MCI_WRITE is not set
# CONFIG_MCI_MMC_BOOT_PARTITIONS is not set
# CONFIG_MCI_MMC_GPP_PARTITIONS is not set
+# CONFIG_MCI_BROKEN_CD is not set
#
# --- MCI host drivers ---
diff --git a/configs/platform-v7a/barebox-am335x.config b/configs/platform-v7a/barebox-am335x.config
index 964b9dd..068fd5f 100644
--- a/configs/platform-v7a/barebox-am335x.config
+++ b/configs/platform-v7a/barebox-am335x.config
@@ -655,6 +655,7 @@ CONFIG_MCI_INFO=y
CONFIG_MCI_WRITE=y
# CONFIG_MCI_MMC_BOOT_PARTITIONS is not set
# CONFIG_MCI_MMC_GPP_PARTITIONS is not set
+CONFIG_MCI_BROKEN_CD=y
#
# --- MCI host drivers ---
diff --git a/configs/platform-v7a/barebox-am335x.config.diff b/configs/platform-v7a/barebox-am335x.config.diff
index 376cdde..17dc897 100644
--- a/configs/platform-v7a/barebox-am335x.config.diff
+++ b/configs/platform-v7a/barebox-am335x.config.diff
@@ -1,4 +1,4 @@
-ce1ca5fe3cea9cabd6af79b60ecde84b
+c2cbf48a6de666e3854240d3b1769aee
# CONFIG_AM33XX_NET_BOOT is not set
CONFIG_ARCH_AM33XX=y
# CONFIG_ARCH_BCM283X is not set
diff --git a/configs/platform-v7a/barebox-at91.config b/configs/platform-v7a/barebox-at91.config
index 4306cfd..2f00891 100644
--- a/configs/platform-v7a/barebox-at91.config
+++ b/configs/platform-v7a/barebox-at91.config
@@ -610,6 +610,7 @@ CONFIG_MCI_INFO=y
CONFIG_MCI_WRITE=y
CONFIG_MCI_MMC_BOOT_PARTITIONS=y
# CONFIG_MCI_MMC_GPP_PARTITIONS is not set
+CONFIG_MCI_BROKEN_CD=y
#
# --- MCI host drivers ---
diff --git a/configs/platform-v7a/barebox-at91.config.diff b/configs/platform-v7a/barebox-at91.config.diff
index ed1ed6d..3e80f99 100644
--- a/configs/platform-v7a/barebox-at91.config.diff
+++ b/configs/platform-v7a/barebox-at91.config.diff
@@ -1,4 +1,4 @@
-ce1ca5fe3cea9cabd6af79b60ecde84b
+c2cbf48a6de666e3854240d3b1769aee
CONFIG_ARCH_AT91=y
# CONFIG_ARCH_BCM283X is not set
CONFIG_ARCH_TEXT_BASE=0x23f00000
diff --git a/configs/platform-v7a/barebox-mx6.config b/configs/platform-v7a/barebox-mx6.config
index 4d98b5e..b6cf2e6 100644
--- a/configs/platform-v7a/barebox-mx6.config
+++ b/configs/platform-v7a/barebox-mx6.config
@@ -767,6 +767,7 @@ CONFIG_MCI_INFO=y
CONFIG_MCI_WRITE=y
CONFIG_MCI_MMC_BOOT_PARTITIONS=y
# CONFIG_MCI_MMC_GPP_PARTITIONS is not set
+CONFIG_MCI_BROKEN_CD=y
#
# --- MCI host drivers ---
diff --git a/configs/platform-v7a/barebox-mx6.config.diff b/configs/platform-v7a/barebox-mx6.config.diff
index b9a05e4..9f596de 100644
--- a/configs/platform-v7a/barebox-mx6.config.diff
+++ b/configs/platform-v7a/barebox-mx6.config.diff
@@ -1,4 +1,4 @@
-ce1ca5fe3cea9cabd6af79b60ecde84b
+c2cbf48a6de666e3854240d3b1769aee
# CONFIG_ARCH_BCM283X is not set
CONFIG_ARCH_HAS_FEC_IMX=y
CONFIG_ARCH_HAS_IMX_GPT=y
diff --git a/configs/platform-v7a/barebox-rpi2.config b/configs/platform-v7a/barebox-rpi2.config
index 77bb09e..650aad7 100644
--- a/configs/platform-v7a/barebox-rpi2.config
+++ b/configs/platform-v7a/barebox-rpi2.config
@@ -594,6 +594,7 @@ CONFIG_MCI_INFO=y
CONFIG_MCI_WRITE=y
CONFIG_MCI_MMC_BOOT_PARTITIONS=y
# CONFIG_MCI_MMC_GPP_PARTITIONS is not set
+CONFIG_MCI_BROKEN_CD=y
#
# --- MCI host drivers ---
diff --git a/configs/platform-v7a/barebox-rpi2.config.diff b/configs/platform-v7a/barebox-rpi2.config.diff
index f7ffae8..3ff572b 100644
--- a/configs/platform-v7a/barebox-rpi2.config.diff
+++ b/configs/platform-v7a/barebox-rpi2.config.diff
@@ -1,4 +1,4 @@
-ce1ca5fe3cea9cabd6af79b60ecde84b
+c2cbf48a6de666e3854240d3b1769aee
CONFIG_ARM_ASM_UNIFIED=y
CONFIG_BOOTM_INITRD=y
# CONFIG_CMD_I2C is undefined
diff --git a/configs/platform-v7a/barebox-stm32mp.config b/configs/platform-v7a/barebox-stm32mp.config
index 15b2a83..6053a43 100644
--- a/configs/platform-v7a/barebox-stm32mp.config
+++ b/configs/platform-v7a/barebox-stm32mp.config
@@ -560,6 +560,7 @@ CONFIG_MCI_INFO=y
CONFIG_MCI_WRITE=y
CONFIG_MCI_MMC_BOOT_PARTITIONS=y
# CONFIG_MCI_MMC_GPP_PARTITIONS is not set
+CONFIG_MCI_BROKEN_CD=y
#
# --- MCI host drivers ---
diff --git a/configs/platform-v7a/barebox-stm32mp.config.diff b/configs/platform-v7a/barebox-stm32mp.config.diff
index d14e40f..dec198a 100644
--- a/configs/platform-v7a/barebox-stm32mp.config.diff
+++ b/configs/platform-v7a/barebox-stm32mp.config.diff
@@ -1,4 +1,4 @@
-ce1ca5fe3cea9cabd6af79b60ecde84b
+c2cbf48a6de666e3854240d3b1769aee
# CONFIG_ARCH_BCM283X is not set
CONFIG_ARCH_HAS_RESET_CONTROLLER=y
CONFIG_ARCH_NR_GPIO=416
diff --git a/configs/platform-v7a/barebox-vexpress.config b/configs/platform-v7a/barebox-vexpress.config
index e6f50d1..a9101f0 100644
--- a/configs/platform-v7a/barebox-vexpress.config
+++ b/configs/platform-v7a/barebox-vexpress.config
@@ -603,6 +603,7 @@ CONFIG_MCI_INFO=y
CONFIG_MCI_WRITE=y
# CONFIG_MCI_MMC_BOOT_PARTITIONS is not set
# CONFIG_MCI_MMC_GPP_PARTITIONS is not set
+CONFIG_MCI_BROKEN_CD=y
#
# --- MCI host drivers ---
diff --git a/configs/platform-v7a/barebox-vexpress.config.diff b/configs/platform-v7a/barebox-vexpress.config.diff
index f09afd2..f712d6c 100644
--- a/configs/platform-v7a/barebox-vexpress.config.diff
+++ b/configs/platform-v7a/barebox-vexpress.config.diff
@@ -1,4 +1,4 @@
-ce1ca5fe3cea9cabd6af79b60ecde84b
+c2cbf48a6de666e3854240d3b1769aee
CONFIG_AMBA_SP804=y
# CONFIG_ARCH_BCM283X is not set
CONFIG_ARCH_VEXPRESS=y
diff --git a/configs/platform-v7a/barebox.config b/configs/platform-v7a/barebox.config
index 9e15a66..655ab1c 100644
--- a/configs/platform-v7a/barebox.config
+++ b/configs/platform-v7a/barebox.config
@@ -615,6 +615,7 @@ CONFIG_MCI_INFO=y
CONFIG_MCI_WRITE=y
# CONFIG_MCI_MMC_BOOT_PARTITIONS is not set
# CONFIG_MCI_MMC_GPP_PARTITIONS is not set
+CONFIG_MCI_BROKEN_CD=y
#
# --- MCI host drivers ---
diff --git a/configs/platform-v7a/patches/barebox-2022.06.0/0001-mci-add-new-MCI_BROKEN_CD-option-for-testing.patch b/configs/platform-v7a/patches/barebox-2022.06.0/0001-mci-add-new-MCI_BROKEN_CD-option-for-testing.patch
new file mode 100644
index 0000000..8d10cf3
--- /dev/null
+++ b/configs/platform-v7a/patches/barebox-2022.06.0/0001-mci-add-new-MCI_BROKEN_CD-option-for-testing.patch
@@ -0,0 +1,122 @@
+From git@z Thu Jan 1 00:00:00 1970
+Subject: [PATCH v2] mci: add new MCI_BROKEN_CD option for testing
+From: Ahmad Fatoum <a.fatoum@pengutronix.de>
+Date: Mon, 25 Jul 2022 13:58:56 +0200
+Message-Id: <20220725115856.1288819-1-a.fatoum@pengutronix.de>
+To: barebox@lists.infradead.org
+Cc: Ahmad Fatoum <a.fatoum@pengutronix.de>
+List-Id: <barebox.lists.infradead.org>
+MIME-Version: 1.0
+Content-Type: text/plain; charset="utf-8"
+Content-Transfer-Encoding: 7bit
+
+In remote labs co-located with other hardware, we've observed card
+detect levers of different boards to sporadically fail to detect
+the card, e.g. because the cable on the usbsdmux was yanked around
+by accident. When this happens, barebox usually boots up normally as
+the card detect is ignored and then Linux waits indefinitely for
+the card-detect to turn active. Add a new config option that can be
+enabled to avoid these issues altogether.
+
+Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
+---
+v1 -> v2:
+ - use early exit instead of if-else
+ - don't fail mci_card_probe if of_register_fixup fails
+---
+ drivers/mci/Kconfig | 15 +++++++++++++++
+ drivers/mci/mci-core.c | 36 ++++++++++++++++++++++++++++++++----
+ 2 files changed, 47 insertions(+), 4 deletions(-)
+
+diff --git a/drivers/mci/Kconfig b/drivers/mci/Kconfig
+index 21d53c0c3f0b..651e59259790 100644
+--- a/drivers/mci/Kconfig
++++ b/drivers/mci/Kconfig
+@@ -56,6 +56,21 @@ config MCI_MMC_GPP_PARTITIONS
+ Note: by default, 'MMC' devices have no 'general purpose partitions',
+ it requires a special one-time configuration step to enable them.
+
++config MCI_BROKEN_CD
++ bool "ignore card-detect pin on boot and in OS"
++ help
++ Say 'y' here to have barebox unconditionally ignore the
++ card-detect pin for its own operation and manipulate the
++ kernel DT, so all detected MCI cards are polled instead
++ of expecting the card detect lever to behave correctly.
++ If you need more fine grained control use of_property
++ in an init script:
++
++ of_property -fd mmc0 cd-gpios
++ of_property -fs mmc0 broken-cd
++
++ If unsure, say 'n' here.
++
+ comment "--- MCI host drivers ---"
+
+ config MCI_DW
+diff --git a/drivers/mci/mci-core.c b/drivers/mci/mci-core.c
+index 82e2f82f5377..4db2253c3a80 100644
+--- a/drivers/mci/mci-core.c
++++ b/drivers/mci/mci-core.c
+@@ -1727,6 +1727,27 @@ static int mci_register_partition(struct mci_part *part)
+ return 0;
+ }
+
++static int of_broken_cd_fixup(struct device_node *root, void *ctx)
++{
++ struct device_d *hw_dev = ctx;
++ struct device_node *np;
++ char *name;
++
++ name = of_get_reproducible_name(hw_dev->device_node);
++ np = of_find_node_by_reproducible_name(root, name);
++ free(name);
++ if (!np) {
++ dev_warn(hw_dev, "Cannot find nodepath %s, cannot fixup\n",
++ hw_dev->device_node->full_name);
++ return -EINVAL;
++ }
++
++ of_property_write_bool(np, "cd-gpios", false);
++ of_property_write_bool(np, "broken-cd", true);
++
++ return 0;
++}
++
+ /**
+ * Probe an MCI card at the given host interface
+ * @param mci MCI device instance
+@@ -1737,10 +1758,13 @@ static int mci_card_probe(struct mci *mci)
+ struct mci_host *host = mci->host;
+ int i, rc, disknum, ret;
+
+- if (host->card_present && !host->card_present(host) &&
+- !host->non_removable) {
+- dev_err(&mci->dev, "no card inserted\n");
+- return -ENODEV;
++ if (host->card_present && !host->card_present(host) && !host->non_removable) {
++ if (!IS_ENABLED(CONFIG_MCI_BROKEN_CD)) {
++ dev_err(&mci->dev, "no card inserted\n");
++ return -ENODEV;
++ }
++
++ dev_info(&mci->dev, "no card inserted (ignoring)\n");
+ }
+
+ ret = regulator_enable(host->supply);
+@@ -1818,6 +1842,10 @@ static int mci_card_probe(struct mci *mci)
+ }
+ }
+
++ if (IS_ENABLED(CONFIG_MCI_BROKEN_CD) && !host->no_sd &&
++ dev_of_node(host->hw_dev))
++ of_register_fixup(of_broken_cd_fixup, host->hw_dev);
++
+ dev_dbg(&mci->dev, "SD Card successfully added\n");
+
+ on_error:
+
+--
+2.30.2
+
+
diff --git a/configs/platform-v7a/patches/barebox-2022.06.0/series b/configs/platform-v7a/patches/barebox-2022.06.0/series
new file mode 100644
index 0000000..0736422
--- /dev/null
+++ b/configs/platform-v7a/patches/barebox-2022.06.0/series
@@ -0,0 +1 @@
+0001-mci-add-new-MCI_BROKEN_CD-option-for-testing.patch