[PATCH] Exynos4: Add HSMMC channel 4 support
Kyungmin Park
kmpark at infradead.org
Thu Mar 10 22:18:18 EST 2011
On Fri, Mar 11, 2011 at 11:30 AM, Kukjin Kim <kgene.kim at samsung.com> wrote:
> Kyungmin Park wrote:
>>
>> From: Kyungmin Park <kyungmin.park at samsung.com>
>>
>> Exynos4 has the DesignWare Host controller at channel 4.
>>
> Yeah, Exynos4210 has it but it can be happened problem when used your
> approach later.
> Because, we can't assume hsmmc4 to be used for dw_mmc on other SoCs.
>
> I mean, other file, eg., dev-dwmmc.c or dev-dwmci.c should be added for its
> platform devices.
Who's opinions? Please Cc the proper person at LSI. I want to listen
his opinions.
Thank you,
Kyungmin Park
>
> Thanks.
>
> Best regards,
> Kgene.
> --
> Kukjin Kim <kgene.kim at samsung.com>, Senior Engineer,
> SW Solution Development Team, Samsung Electronics Co., Ltd.
>
>> Signed-off-by: Kyungmin Park <kyungmin.park at samsung.com>
>> ---
>> diff --git a/arch/arm/mach-exynos4/include/mach/irqs.h b/arch/arm/mach-
>> exynos4/include/mach/irqs.h
>> index 2dc5900..aa32679 100644
>> --- a/arch/arm/mach-exynos4/include/mach/irqs.h
>> +++ b/arch/arm/mach-exynos4/include/mach/irqs.h
>> @@ -104,6 +104,7 @@
>> #define IRQ_HSMMC1 COMBINER_IRQ(29, 1)
>> #define IRQ_HSMMC2 COMBINER_IRQ(29, 2)
>> #define IRQ_HSMMC3 COMBINER_IRQ(29, 3)
>> +#define IRQ_HSMMC4 COMBINER_IRQ(29, 4)
>>
>> #define IRQ_MIPI_CSIS0 COMBINER_IRQ(30, 0)
>> #define IRQ_MIPI_CSIS1 COMBINER_IRQ(30, 1)
>> diff --git a/arch/arm/mach-exynos4/include/mach/map.h b/arch/arm/mach-
>> exynos4/include/mach/map.h
>> index 80a41e0..ea79962 100644
>> --- a/arch/arm/mach-exynos4/include/mach/map.h
>> +++ b/arch/arm/mach-exynos4/include/mach/map.h
>> @@ -107,6 +107,7 @@
>> #define S3C_PA_HSMMC1 EXYNOS4_PA_HSMMC(1)
>> #define S3C_PA_HSMMC2 EXYNOS4_PA_HSMMC(2)
>> #define S3C_PA_HSMMC3 EXYNOS4_PA_HSMMC(3)
>> +#define S3C_PA_HSMMC4 EXYNOS4_PA_HSMMC(4)
>> #define S3C_PA_IIC EXYNOS4_PA_IIC(0)
>> #define S3C_PA_IIC1 EXYNOS4_PA_IIC(1)
>> #define S3C_PA_IIC2 EXYNOS4_PA_IIC(2)
>> diff --git a/arch/arm/plat-samsung/Kconfig b/arch/arm/plat-samsung/Kconfig
>> index be72100..f816985 100644
>> --- a/arch/arm/plat-samsung/Kconfig
>> +++ b/arch/arm/plat-samsung/Kconfig
>> @@ -171,6 +171,11 @@ config S3C_DEV_HSMMC3
>> help
>> Compile in platform device definitions for HSMMC channel 3
>>
>> +config S3C_DEV_HSMMC4
>> + bool
>> + help
>> + Compile in platform device definitions for HSMMC channel 4
>> +
>> config S3C_DEV_HWMON
>> bool
>> help
>> diff --git a/arch/arm/plat-samsung/Makefile
> b/arch/arm/plat-samsung/Makefile
>> index e9de58a..7ddba03 100644
>> --- a/arch/arm/plat-samsung/Makefile
>> +++ b/arch/arm/plat-samsung/Makefile
>> @@ -37,6 +37,7 @@ obj-$(CONFIG_S3C_DEV_HSMMC) += dev-hsmmc.o
>> obj-$(CONFIG_S3C_DEV_HSMMC1) += dev-hsmmc1.o
>> obj-$(CONFIG_S3C_DEV_HSMMC2) += dev-hsmmc2.o
>> obj-$(CONFIG_S3C_DEV_HSMMC3) += dev-hsmmc3.o
>> +obj-$(CONFIG_S3C_DEV_HSMMC4) += dev-hsmmc4.o
>> obj-$(CONFIG_S3C_DEV_HWMON) += dev-hwmon.o
>> obj-y += dev-i2c0.o
>> obj-$(CONFIG_S3C_DEV_I2C1) += dev-i2c1.o
>> diff --git a/arch/arm/plat-samsung/dev-hsmmc4.c
> b/arch/arm/plat-samsung/dev-
>> hsmmc4.c
>> new file mode 100644
>> index 0000000..c69a78f
>> --- /dev/null
>> +++ b/arch/arm/plat-samsung/dev-hsmmc4.c
>> @@ -0,0 +1,54 @@
>> +/* linux/arch/arm/plat-samsung/dev-hsmmc4.c
>> + *
>> + * Copyright (C) 2011 Samsung Electronics Co., Ltd.
>> + *
>> + * Samsung device definition for hsmmc device 4
>> + *
>> + * This program is free software; you can redistribute it and/or modify
>> + * it under the terms of the GNU General Public License version 2 as
>> + * published by the Free Software Foundation.
>> + */
>> +
>> +#include <linux/kernel.h>
>> +#include <linux/platform_device.h>
>> +#include <linux/mmc/host.h>
>> +#include <linux/mmc/dw_mmc.h>
>> +#include <linux/dma-mapping.h>
>> +
>> +#include <mach/map.h>
>> +#include <plat/sdhci.h>
>> +#include <plat/devs.h>
>> +
>> +#define S3C_SZ_HSMMC 0x1000
>> +
>> +static struct resource s3c_hsmmc4_resource[] = {
>> + [0] = {
>> + .start = S3C_PA_HSMMC4,
>> + .end = S3C_PA_HSMMC4 + S3C_SZ_HSMMC - 1,
>> + .flags = IORESOURCE_MEM,
>> + },
>> + [1] = {
>> + .start = IRQ_HSMMC4,
>> + .end = IRQ_HSMMC4,
>> + .flags = IORESOURCE_IRQ,
>> + }
>> +};
>> +
>> +static u64 s3c_device_hsmmc4_dmamask = DMA_BIT_MASK(32);
>> +
>> +struct platform_device s3c_device_hsmmc4 = {
>> + .name = "dw_mmc",
>> + .id = -1,
>> + .num_resources = ARRAY_SIZE(s3c_hsmmc4_resource),
>> + .resource = s3c_hsmmc4_resource,
>> + .dev = {
>> + .dma_mask = &s3c_device_hsmmc4_dmamask,
>> + .coherent_dma_mask = DMA_BIT_MASK(32),
>> + },
>> +};
>> +
>> +void s3c_hsmmc4_set_platdata(struct dw_mci_board *pdata)
>> +{
>> + s3c_set_platdata(pdata, sizeof(struct dw_mci_board),
>> + &s3c_device_hsmmc4);
>> +}
>> diff --git a/arch/arm/plat-samsung/include/plat/devs.h b/arch/arm/plat-
>> samsung/include/plat/devs.h
>> index e2b3ab9..4e198ba 100644
>> --- a/arch/arm/plat-samsung/include/plat/devs.h
>> +++ b/arch/arm/plat-samsung/include/plat/devs.h
>> @@ -65,6 +65,7 @@ extern struct platform_device s3c_device_hsmmc0;
>> extern struct platform_device s3c_device_hsmmc1;
>> extern struct platform_device s3c_device_hsmmc2;
>> extern struct platform_device s3c_device_hsmmc3;
>> +extern struct platform_device s3c_device_hsmmc4;
>> extern struct platform_device s3c_device_cfcon;
>>
>> extern struct platform_device s3c_device_spi0;
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
> the body of a message to majordomo at vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
More information about the linux-arm-kernel
mailing list