From 0abb0aeeead1058fa750b35d68dc4e4f63c8f0a7 Mon Sep 17 00:00:00 2001 From: Piotr Wilczek Date: Tue, 21 May 2013 15:39:04 +0200 Subject: arm:exynos:gpio: fix s5p_gpio_part_max for exynos4x12 This patch fix wrong value returned by 's5p_gpio_part_max' function for Exynos4412. Signed-off-by: Piotr Wilczek Signed-off-by: Kyungmin Park Signed-off-by: Minkyu Kang --- arch/arm/include/asm/arch-exynos/gpio.h | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'arch') diff --git a/arch/arm/include/asm/arch-exynos/gpio.h b/arch/arm/include/asm/arch-exynos/gpio.h index e955811262..a1a74393d0 100644 --- a/arch/arm/include/asm/arch-exynos/gpio.h +++ b/arch/arm/include/asm/arch-exynos/gpio.h @@ -290,10 +290,19 @@ static inline unsigned int s5p_gpio_part_max(int nr) return EXYNOS5_GPIO_PART2_MAX; } else if (cpu_is_exynos4()) { - if (nr < EXYNOS4_GPIO_PART1_MAX) - return 0; - else - return EXYNOS4_GPIO_PART1_MAX; + if (proid_is_exynos4412()) { + if (nr < EXYNOS4X12_GPIO_PART1_MAX) + return 0; + else if (nr < EXYNOS4X12_GPIO_PART2_MAX) + return EXYNOS4X12_GPIO_PART1_MAX; + else + return EXYNOS4X12_GPIO_PART2_MAX; + } else { + if (nr < EXYNOS4_GPIO_PART1_MAX) + return 0; + else + return EXYNOS4_GPIO_PART1_MAX; + } } return 0; -- cgit v1.2.1 From 7324907082b94679fe57ba0067c1079a03cbfd89 Mon Sep 17 00:00:00 2001 From: Przemyslaw Marczak Date: Tue, 3 Sep 2013 14:57:52 +0200 Subject: arm:mmc:goni/exynos: Fix wrong mmc base register devices offset. On s5pc1xx mmc devices offset is multiply of 0x100000, wrong value was 0x10000. Register offset always points to mmc 0 before this change. Add macro definition of mmc dev register offset to s5pc1xx and exynos mmc. Signed-off-by: Przemyslaw Marczak Signed-off-by: Kyungmin Park CC: Minkyu Kang Acked-by: Jaehoon Chung Signed-off-by: Minkyu Kang --- arch/arm/include/asm/arch-exynos/mmc.h | 6 +++++- arch/arm/include/asm/arch-s5pc1xx/mmc.h | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) (limited to 'arch') diff --git a/arch/arm/include/asm/arch-exynos/mmc.h b/arch/arm/include/asm/arch-exynos/mmc.h index 96610b88f4..98312d1c3c 100644 --- a/arch/arm/include/asm/arch-exynos/mmc.h +++ b/arch/arm/include/asm/arch-exynos/mmc.h @@ -8,6 +8,8 @@ #ifndef __ASM_ARCH_MMC_H_ #define __ASM_ARCH_MMC_H_ +#define S5P_MMC_DEV_OFFSET 0x10000 + #define SDHCI_CONTROL2 0x80 #define SDHCI_CONTROL3 0x84 #define SDHCI_CONTROL4 0x8C @@ -55,7 +57,9 @@ int s5p_sdhci_init(u32 regbase, int index, int bus_width); static inline unsigned int s5p_mmc_init(int index, int bus_width) { - unsigned int base = samsung_get_base_mmc() + (0x10000 * index); + unsigned int base = samsung_get_base_mmc() + + (S5P_MMC_DEV_OFFSET * index); + return s5p_sdhci_init(base, index, bus_width); } #endif diff --git a/arch/arm/include/asm/arch-s5pc1xx/mmc.h b/arch/arm/include/asm/arch-s5pc1xx/mmc.h index 96610b88f4..55ff10b23c 100644 --- a/arch/arm/include/asm/arch-s5pc1xx/mmc.h +++ b/arch/arm/include/asm/arch-s5pc1xx/mmc.h @@ -8,6 +8,8 @@ #ifndef __ASM_ARCH_MMC_H_ #define __ASM_ARCH_MMC_H_ +#define S5P_MMC_DEV_OFFSET 0x100000 + #define SDHCI_CONTROL2 0x80 #define SDHCI_CONTROL3 0x84 #define SDHCI_CONTROL4 0x8C @@ -55,7 +57,9 @@ int s5p_sdhci_init(u32 regbase, int index, int bus_width); static inline unsigned int s5p_mmc_init(int index, int bus_width) { - unsigned int base = samsung_get_base_mmc() + (0x10000 * index); + unsigned int base = samsung_get_base_mmc() + + (S5P_MMC_DEV_OFFSET * index); + return s5p_sdhci_init(base, index, bus_width); } #endif -- cgit v1.2.1