[PATCH 1/1] rtemsbsd/sdhci: Fix Arasan driver when no card present

Kinsey Moore kinsey.moore at oarcorp.com
Thu Mar 23 15:26:01 UTC 2023


Hey Rick,
This looks good for the most part and thanks for the contribution.

For future patches, please make sure you specify the repository in your
subject line if the patch isn't for the RTEMS repository. This can be
configured to occur automatically in your local per-repo git configuration
using this:
git config format.subjectprefix "PATCH rtems-libbsd"

This should actually be referenced in the git docs for this project, but it
appears that there's a mistake in the markup that I'm about to go fix.

Just one comment inline below:

On Wed, Mar 22, 2023 at 7:02 PM <rvanderwal at bellsouth.net> wrote:

> From: Rick VanderWal <rvanderwal at bellsouth.net>
>
> This fixes an issue where the card present signal doesn't stabilize
> quickly and indicates present when no card is inserted in a removable
> slot.
> ---
>  rtemsbsd/sys/dev/sdhci/arasan_sdhci.c | 20 ++++++++++++++++++++
>  1 file changed, 20 insertions(+)
>
> diff --git a/rtemsbsd/sys/dev/sdhci/arasan_sdhci.c
> b/rtemsbsd/sys/dev/sdhci/arasan_sdhci.c
> index 0e87d903..7ac0a971 100644
> --- a/rtemsbsd/sys/dev/sdhci/arasan_sdhci.c
> +++ b/rtemsbsd/sys/dev/sdhci/arasan_sdhci.c
> @@ -195,6 +195,26 @@ arasan_sdhci_get_card_present(device_t dev, struct
> sdhci_slot *slot)
>  {
>         struct arasan_sdhci_softc *sc = device_get_softc(dev);
>
> +       // wait a maximum of 1 second for card stable to settle
> +       const unsigned int max_tries = 20;
> +       const rtems_interval sleep_ticks =
> +               rtems_clock_get_ticks_per_second() / max_tries;
> +
> +       unsigned int count = 0;
> +       while (!(RD4(sc, SDHCI_PRESENT_STATE) & SDHCI_CARD_STABLE) &&
> +               (count < max_tries))
> +       {
> +               rtems_task_wake_after(sleep_ticks);
> +               ++count;
> +       }
> +
> +       if (!(RD4(sc, SDHCI_PRESENT_STATE) & SDHCI_CARD_STABLE))
> +       {
> +               device_printf(dev,
> +                       "CD failed to stabilize, setting to not
> present.\n");
>

What is "CD"? Should this be "SD"?


> +               return false;
> +       }
> +
>         return (RD4(sc, SDHCI_PRESENT_STATE) & SDHCI_CARD_PRESENT);
>  }
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/devel/attachments/20230323/92938159/attachment-0001.htm>


More information about the devel mailing list