Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 260641
b: refs/heads/master
c: d791958
h: refs/heads/master
i:
  260639: 3bba9b9
v: v3
  • Loading branch information
Seungwon Jeon authored and Kukjin Kim committed Jul 20, 2011
1 parent 5199607 commit b07229a
Show file tree
Hide file tree
Showing 8 changed files with 112 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 3a1a2b9e69b22a7d9e3c2d9410309ccbedc0ef8f
refs/heads/master: d79195897e610bd0d3563ec401cfd29d836ce0e6
5 changes: 5 additions & 0 deletions trunk/arch/arm/mach-exynos4/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,11 @@ config EXYNOS4_DEV_SYSMMU
help
Common setup code for SYSTEM MMU in EXYNOS4

config EXYNOS4_DEV_DWMCI
bool
help
Compile in platform device definitions for DWMCI

config EXYNOS4_SETUP_I2C1
bool
help
Expand Down
1 change: 1 addition & 0 deletions trunk/arch/arm/mach-exynos4/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ obj-y += dev-audio.o
obj-$(CONFIG_EXYNOS4_DEV_AHCI) += dev-ahci.o
obj-$(CONFIG_EXYNOS4_DEV_PD) += dev-pd.o
obj-$(CONFIG_EXYNOS4_DEV_SYSMMU) += dev-sysmmu.o
obj-$(CONFIG_EXYNOS4_DEV_DWMCI) += dev-dwmci.o

obj-$(CONFIG_EXYNOS4_SETUP_FIMC) += setup-fimc.o
obj-$(CONFIG_EXYNOS4_SETUP_I2C1) += setup-i2c1.o
Expand Down
82 changes: 82 additions & 0 deletions trunk/arch/arm/mach-exynos4/dev-dwmci.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
/*
* linux/arch/arm/mach-exynos4/dev-dwmci.c
*
* Copyright (c) 2011 Samsung Electronics Co., Ltd.
* http://www.samsung.com
*
* Platform device for Synopsys DesignWare Mobile Storage IP
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*/

#include <linux/kernel.h>
#include <linux/dma-mapping.h>
#include <linux/platform_device.h>
#include <linux/interrupt.h>
#include <linux/mmc/dw_mmc.h>

#include <plat/devs.h>

#include <mach/map.h>

static int exynos4_dwmci_get_bus_wd(u32 slot_id)
{
return 4;
}

static int exynos4_dwmci_init(u32 slot_id, irq_handler_t handler, void *data)
{
return 0;
}

static struct resource exynos4_dwmci_resource[] = {
[0] = {
.start = EXYNOS4_PA_DWMCI,
.end = EXYNOS4_PA_DWMCI + SZ_4K - 1,
.flags = IORESOURCE_MEM,
},
[1] = {
.start = IRQ_DWMCI,
.end = IRQ_DWMCI,
.flags = IORESOURCE_IRQ,
}
};

static struct dw_mci_board exynos4_dwci_pdata = {
.num_slots = 1,
.quirks = DW_MCI_QUIRK_BROKEN_CARD_DETECTION,
.bus_hz = 80 * 1000 * 1000,
.detect_delay_ms = 200,
.init = exynos4_dwmci_init,
.get_bus_wd = exynos4_dwmci_get_bus_wd,
};

static u64 exynos4_dwmci_dmamask = DMA_BIT_MASK(32);

struct platform_device exynos4_device_dwmci = {
.name = "dw_mmc",
.id = -1,
.num_resources = ARRAY_SIZE(exynos4_dwmci_resource),
.resource = exynos4_dwmci_resource,
.dev = {
.dma_mask = &exynos4_dwmci_dmamask,
.coherent_dma_mask = DMA_BIT_MASK(32),
.platform_data = &exynos4_dwci_pdata,
},
};

void __init exynos4_dwmci_set_platdata(struct dw_mci_board *pd)
{
struct dw_mci_board *npd;

npd = s3c_set_platdata(pd, sizeof(struct dw_mci_board),
&exynos4_device_dwmci);

if (!npd->init)
npd->init = exynos4_dwmci_init;
if (!npd->get_bus_wd)
npd->get_bus_wd = exynos4_dwmci_get_bus_wd;
}
20 changes: 20 additions & 0 deletions trunk/arch/arm/mach-exynos4/include/mach/dwmci.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
/* linux/arch/arm/mach-exynos4/include/mach/dwmci.h
*
* Copyright (c) 2011 Samsung Electronics Co., Ltd.
* http://www.samsung.com/
*
* Synopsys DesignWare Mobile Storage for EXYNOS4210
*
* 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.
*/

#ifndef __ASM_ARM_ARCH_DWMCI_H
#define __ASM_ARM_ARCH_DWMCI_H __FILE__

#include <linux/mmc/dw_mmc.h>

extern void exynos4_dwmci_set_platdata(struct dw_mci_board *pd);

#endif /* __ASM_ARM_ARCH_DWMCI_H */
1 change: 1 addition & 0 deletions trunk/arch/arm/mach-exynos4/include/mach/irqs.h
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@
#define IRQ_HSMMC1 IRQ_SPI(74)
#define IRQ_HSMMC2 IRQ_SPI(75)
#define IRQ_HSMMC3 IRQ_SPI(76)
#define IRQ_DWMCI IRQ_SPI(77)

#define IRQ_MIPICSI0 IRQ_SPI(78)

Expand Down
1 change: 1 addition & 0 deletions trunk/arch/arm/mach-exynos4/include/mach/map.h
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@
#define EXYNOS4_PA_MIPI_CSIS1 0x11890000

#define EXYNOS4_PA_HSMMC(x) (0x12510000 + ((x) * 0x10000))
#define EXYNOS4_PA_DWMCI 0x12550000

#define EXYNOS4_PA_SATA 0x12560000
#define EXYNOS4_PA_SATAPHY 0x125D0000
Expand Down
1 change: 1 addition & 0 deletions trunk/arch/arm/plat-samsung/include/plat/devs.h
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,7 @@ extern struct platform_device exynos4_device_i2s2;
extern struct platform_device exynos4_device_spdif;
extern struct platform_device exynos4_device_pd[];
extern struct platform_device exynos4_device_ahci;
extern struct platform_device exynos4_device_dwmci;

extern struct platform_device s5p6440_device_pcm;
extern struct platform_device s5p6440_device_iis;
Expand Down

0 comments on commit b07229a

Please sign in to comment.