diff options
-rw-r--r-- | configs/platform-v7a/barebox-am335x-mlo.config | 1 | ||||
-rw-r--r-- | configs/platform-v7a/barebox-am335x.config | 1 | ||||
-rw-r--r-- | configs/platform-v7a/barebox-am335x.config.diff | 2 | ||||
-rw-r--r-- | configs/platform-v7a/barebox-at91.config | 1 | ||||
-rw-r--r-- | configs/platform-v7a/barebox-at91.config.diff | 2 | ||||
-rw-r--r-- | configs/platform-v7a/barebox-mx6.config | 1 | ||||
-rw-r--r-- | configs/platform-v7a/barebox-mx6.config.diff | 2 | ||||
-rw-r--r-- | configs/platform-v7a/barebox-rpi2.config | 1 | ||||
-rw-r--r-- | configs/platform-v7a/barebox-rpi2.config.diff | 2 | ||||
-rw-r--r-- | configs/platform-v7a/barebox-stm32mp.config | 1 | ||||
-rw-r--r-- | configs/platform-v7a/barebox-stm32mp.config.diff | 2 | ||||
-rw-r--r-- | configs/platform-v7a/barebox-vexpress.config | 1 | ||||
-rw-r--r-- | configs/platform-v7a/barebox-vexpress.config.diff | 2 | ||||
-rw-r--r-- | configs/platform-v7a/barebox.config | 1 | ||||
-rw-r--r-- | configs/platform-v7a/patches/barebox-2022.06.0/0001-mci-add-new-MCI_BROKEN_CD-option-for-testing.patch | 122 | ||||
-rw-r--r-- | configs/platform-v7a/patches/barebox-2022.06.0/series | 1 |
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 |