Sudhakar Rajashekhara <[email protected]> writes:
> On DA850/OMAP-L138 EVM, MMC/SD and NOR Flash share
> some of the AEMIF pins. This patch prints out a warning
> during booting, if both MMC/SD and NOR Flash are enabled
> in kernel menuconfig.
>
> If both MMC/SD and NOR Flash are enabled, only MMC/SD
> will work correctly.
>
> Signed-off-by: Sudhakar Rajashekhara <[email protected]>
> ---
> This patch is dependent on the following patches which
> I have submitted earlier:
> [PATCH] davinci: Macro to convert GPIO signal to GPIO pin number
> [PATCH v3] davinci: Add platform support for da850/omap-l138 GLCD
> [PATCH v3] davinci: Add MMC/SD support for da850/omap-l138
> [PATCH v3] davinci: Add NAND flash support for DA850/OMAP-L138
> [PATCH v3] davinci: Add NOR flash support for da850/omap-l138
FYI for future reference. When you have lots of patch dependencies
like this, it is simpler to send them as a series. If you use
git-format-patch for a range of commits, it will automatically do
the 'PATCH x/y' formatting etc.
> arch/arm/mach-davinci/board-da850-evm.c | 63 ++++++++++++++++++++----------
> 1 files changed, 42 insertions(+), 21 deletions(-)
>
> diff --git a/arch/arm/mach-davinci/board-da850-evm.c
> b/arch/arm/mach-davinci/board-da850-evm.c
> index 70a2f48..f2946a0 100644
> --- a/arch/arm/mach-davinci/board-da850-evm.c
> +++ b/arch/arm/mach-davinci/board-da850-evm.c
> @@ -244,6 +244,20 @@ static void __init da850_evm_init_nor(void)
> iounmap(aemif_addr);
> }
>
> +#if defined(CONFIG_MTD_PHYSMAP) || \
> + defined(CONFIG_MTD_PHYSMAP_MODULE)
> +#define HAS_NOR 1
> +#else
> +#define HAS_NOR 0
> +#endif
> +
> +#if defined(CONFIG_MMC_DAVINCI) || \
> + defined(CONFIG_MMC_DAVINCI_MODULE)
> +#define HAS_MMC 1
> +#else
> +#define HAS_MMC 0
> +#endif
> +
> static __init void da850_evm_init(void)
> {
> struct davinci_soc_info *soc_info = &davinci_soc_info;
> @@ -298,27 +312,34 @@ static __init void da850_evm_init(void)
> pr_warning("da830_evm_init: watchdog registration failed: %d\n",
> ret);
>
> - ret = da8xx_pinmux_setup(da850_mmcsd0_pins);
> - if (ret)
> - pr_warning("da850_evm_init: mmcsd0 mux setup failed: %d\n",
> - ret);
> -
> - ret = gpio_request(DA850_MMCSD_CD_PIN, "MMC CD\n");
> - if (ret)
> - pr_warning("da850_evm_init: can not open GPIO %d\n",
> - DA850_MMCSD_CD_PIN);
> - gpio_direction_input(DA850_MMCSD_CD_PIN);
> -
> - ret = gpio_request(DA850_MMCSD_WP_PIN, "MMC WP\n");
> - if (ret)
> - pr_warning("da850_evm_init: can not open GPIO %d\n",
> - DA850_MMCSD_WP_PIN);
> - gpio_direction_input(DA850_MMCSD_WP_PIN);
> -
> - ret = da8xx_register_mmcsd0(&da850_mmc_config);
> - if (ret)
> - pr_warning("da850_evm_init: mmcsd0 registration failed: %d\n",
> - ret);
> + if (HAS_MMC) {
> + if (HAS_NOR)
> + pr_warning("WARNING: both NOR Flash and MMC/SD are "
> + "enabled, but they share AEMIF pins.\n"
> + "\tDisable one of them.\n");
> +
Hmm, this isn't quite right. MMC will never be configured unless NOR
is enabled also.
I think you want the WARNING inside the double-if, but the
mux/gpio/init stuff to always happen. Based on init order, you should
be able to report which one will not work.
Kevin
> + ret = da8xx_pinmux_setup(da850_mmcsd0_pins);
> + if (ret)
> + pr_warning("da850_evm_init: mmcsd0 mux setup failed:"
> + " %d\n", ret);
> +
> + ret = gpio_request(DA850_MMCSD_CD_PIN, "MMC CD\n");
> + if (ret)
> + pr_warning("da850_evm_init: can not open GPIO %d\n",
> + DA850_MMCSD_CD_PIN);
> + gpio_direction_input(DA850_MMCSD_CD_PIN);
> +
> + ret = gpio_request(DA850_MMCSD_WP_PIN, "MMC WP\n");
> + if (ret)
> + pr_warning("da850_evm_init: can not open GPIO %d\n",
> + DA850_MMCSD_WP_PIN);
> + gpio_direction_input(DA850_MMCSD_WP_PIN);
> +
> + ret = da8xx_register_mmcsd0(&da850_mmc_config);
> + if (ret)
> + pr_warning("da850_evm_init: mmcsd0 registration failed:"
> + " %d\n", ret);
> + }
>
> davinci_serial_init(&da850_evm_uart_config);
>
> --
> 1.5.6
>
> _______________________________________________
> Davinci-linux-open-source mailing list
> [email protected]
> http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source
_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source