Hi Ajay,

On Sep 24, 2013, at 11:02 AM, Ajay Bhargav wrote:

> This patch adds support for SD card interface (MMC1 and MMC2) for
> Marvell gplugD.
> 
> Signed-off-by: Ajay Bhargav <ajay.bhar...@einfochips.com>
> ---
> arch/arm/include/asm/arch-armada100/cpu.h |  1 +
> arch/arm/include/asm/arch-armada100/mfp.h | 17 ++++++++++++++
> board/Marvell/gplugd/gplugd.c             | 39 +++++++++++++++++++++++++++++++
> include/configs/gplugd.h                  |  9 +++++++
> 4 files changed, 66 insertions(+)
> 
> diff --git a/arch/arm/include/asm/arch-armada100/cpu.h 
> b/arch/arm/include/asm/arch-armada100/cpu.h
> index c1f190d..8c5091e 100644
> --- a/arch/arm/include/asm/arch-armada100/cpu.h
> +++ b/arch/arm/include/asm/arch-armada100/cpu.h
> @@ -158,5 +158,6 @@ struct armd1cpu_registers {
>  */
> u32 armd1_sdram_base(int);
> u32 armd1_sdram_size(int);
> +int mv_sdh_init(u32 regbase, u32 max_clk, u32 min_clk, u32 quirks);
> 
> #endif /* _ARMADA100CPU_H */
> diff --git a/arch/arm/include/asm/arch-armada100/mfp.h 
> b/arch/arm/include/asm/arch-armada100/mfp.h
> index b918239..202332b 100644
> --- a/arch/arm/include/asm/arch-armada100/mfp.h
> +++ b/arch/arm/include/asm/arch-armada100/mfp.h
> @@ -73,6 +73,23 @@
> #define MFP110_SSP2_CS                (MFP_REG(0x1B8) | MFP_AF0 | 
> MFP_DRIVE_MEDIUM)
> #define MFP111_SSP2_CLK               (MFP_REG(0x1BC) | MFP_AF4 | 
> MFP_DRIVE_MEDIUM)
> 
> +/* MMC 1 */
> +#define MFP040_MMC1_D1               (MFP_REG(0x00C) | MFP_AF1 | 
> MFP_DRIVE_MEDIUM)
> +#define MFP041_MMC1_D0               (MFP_REG(0x010) | MFP_AF1 | 
> MFP_DRIVE_MEDIUM)
> +#define MFP043_MMC1_CLK              (MFP_REG(0x018) | MFP_AF1 | 
> MFP_DRIVE_MEDIUM)
> +#define MFP049_MMC1_CMD              (MFP_REG(0x030) | MFP_AF1 | 
> MFP_DRIVE_MEDIUM)
> +#define MFP051_MMC1_D3               (MFP_REG(0x038) | MFP_AF1 | 
> MFP_DRIVE_MEDIUM)
> +#define MFP052_MMC1_D2               (MFP_REG(0x03C) | MFP_AF1 | 
> MFP_DRIVE_MEDIUM)
> +#define MFP053_MMC1_CD               (MFP_REG(0x040) | MFP_AF1 | 
> MFP_DRIVE_MEDIUM)
> +
> +/* MMC2 */
> +#define MFP028_MMC2_CMD              (MFP_REG(0x0BC) | MFP_AF6 | 
> MFP_DRIVE_MEDIUM)
> +#define MFP029_MMC2_CLK              (MFP_REG(0x0C0) | MFP_AF6 | 
> MFP_DRIVE_MEDIUM)
> +#define MFP030_MMC2_D0               (MFP_REG(0x0C4) | MFP_AF6 | 
> MFP_DRIVE_MEDIUM)
> +#define MFP031_MMC2_D1               (MFP_REG(0x0C8) | MFP_AF6 | 
> MFP_DRIVE_MEDIUM)
> +#define MFP032_MMC2_D2               (MFP_REG(0x0CC) | MFP_AF6 | 
> MFP_DRIVE_MEDIUM)
> +#define MFP033_MMC2_D3               (MFP_REG(0x0D0) | MFP_AF6 | 
> MFP_DRIVE_MEDIUM)
> +
> /* More macros can be defined here... */
> 
> #define MFP_PIN_MAX   117
> diff --git a/board/Marvell/gplugd/gplugd.c b/board/Marvell/gplugd/gplugd.c
> index 0e8ebcc..954d97e 100644
> --- a/board/Marvell/gplugd/gplugd.c
> +++ b/board/Marvell/gplugd/gplugd.c
> @@ -19,6 +19,7 @@
> #include <asm/arch/armada100.h>
> #include <asm/gpio.h>
> #include <miiphy.h>
> +#include <sdhci.h>
> 
> #ifdef CONFIG_ARMADA100_FEC
> #include <net.h>
> @@ -63,6 +64,23 @@ int board_early_init_f(void)
>               MFP110_SSP2_CS,
>               MFP111_SSP2_CLK,
> 
> +             /* MMC1 */
> +             MFP040_MMC1_D1,
> +             MFP041_MMC1_D0,
> +             MFP043_MMC1_CLK,
> +             MFP049_MMC1_CMD,
> +             MFP051_MMC1_D3,
> +             MFP052_MMC1_D2,
> +             MFP053_MMC1_CD,
> +
> +             /* MMC2 */
> +             MFP028_MMC2_CMD,
> +             MFP029_MMC2_CLK,
> +             MFP030_MMC2_D0,
> +             MFP031_MMC2_D1,
> +             MFP032_MMC2_D2,
> +             MFP033_MMC2_D3,
> +
>               MFP_EOC         /*End of configuration*/
>       };
>       /* configure MFP's */
> @@ -90,6 +108,27 @@ int board_init(void)
>       return 0;
> }
> 
> +int board_mmc_init(bd_t *bd)
> +{
> +     struct armd1apmu_registers *apmu_regs =
> +             (struct armd1apmu_registers *)ARMD1_APMU_BASE;
> +
> +     setbits_le32(&apmu_regs->sd1crc, SD1_SD2_AXI_RESET | SD1_RESET);
> +     udelay(10);
> +     setbits_le32(&apmu_regs->sd1crc, SD1_CLK_EN | SD1_SD2_AXICLK_EN);
> +
> +     setbits_le32(&apmu_regs->sd2crc, SD2_RESET);
> +     udelay(10);
> +     setbits_le32(&apmu_regs->sd2crc, SD2_CLK_EN);
> +
> +     mv_sdh_init(ARMD1_SD1_BASE, 0, 0,
> +                     SDHCI_QUIRK_REG32_RW | SDHCI_QUIRK_BROKEN_R1B);
> +
> +     mv_sdh_init(ARMD1_SD2_BASE, 0, 0,
> +                     SDHCI_QUIRK_REG32_RW | SDHCI_QUIRK_BROKEN_R1B);
> +     return 0;
> +}
> +
> #ifdef CONFIG_ARMADA100_FEC
> int board_eth_init(bd_t *bis)
> {
> diff --git a/include/configs/gplugd.h b/include/configs/gplugd.h
> index 404c56a..a4e6c49 100644
> --- a/include/configs/gplugd.h
> +++ b/include/configs/gplugd.h
> @@ -95,6 +95,15 @@
> #define CONFIG_CMD_SF
> #define CONFIG_SPI_FLASH_ATMEL
> 
> +#define CONFIG_MV_SDHCI
> +#define CONFIG_SDHCI
> +#define CONFIG_CMD_MMC
> +#define CONFIG_MMC
> +#define CONFIG_GENERIC_MMC
> +#define CONFIG_DOS_PARTITION
> +#define CONFIG_MMC_SDMA
> +#define CONFIG_MMC_SDHCI_IO_ACCESSORS
> +
> /*
>  * mv-common.h should be defined after CMD configs since it used them
>  * to enable certain macros
> -- 
> 1.8.3.rc3
> 

Acked-by: Pantelis Antoniou <pa...@antoniou-consulting.com>

> *************************************************************************************************************************************************************
> eInfochips Business Disclaimer : This e-mail message and all attachments 
> transmitted with it are intended solely for the use of the addressee and may 
> contain legally privileged and confidential information. If the reader of 
> this message is not the intended recipient, or an employee or agent 
> responsible for delivering this message to the intended recipient, you are 
> hereby notified that any dissemination, distribution, copying, or other use 
> of this message or its attachments is strictly prohibited. If you have 
> received this message in error, please notify the sender immediately by 
> replying to this message and please delete it from your computer. Any views 
> expressed in this message are those of the individual sender unless otherwise 
> stated. Company has taken enough precautions to prevent the spread of 
> viruses. However the company accepts no liability for any damage caused by 
> any virus transmitted by this email.
> *************************************************************************************************************************************************************
> 
> 
> ---------------------------------------------------------------------------------------------
> Notice: 
> This message has been scanned by Trend Micro Mail Security scanner and is 
> believed to be clean
> ---------------------------------------------------------------------------------------------

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to