Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d92c9d5b authored by Arnd Bergmann's avatar Arnd Bergmann
Browse files

Merge branch 'imx-for-arnd' of git://git.pengutronix.de/git/imx/linux-2.6 into fixes

parents 4f778f56 7378a62b
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -789,6 +789,7 @@ L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
S:	Maintained
T:	git git://git.pengutronix.de/git/imx/linux-2.6.git
F:	arch/arm/mach-mx*/
F:	arch/arm/mach-imx/
F:	arch/arm/plat-mxc/

ARM/FREESCALE IMX51
+0 −13
Original line number Diff line number Diff line
@@ -10,11 +10,6 @@ config HAVE_IMX_MMDC
config HAVE_IMX_SRC
	bool

#
# ARCH_MX31 and ARCH_MX35 are left for compatibility
# Some usages assume that having one of them implies not having (e.g.) ARCH_MX2.
# To easily distinguish good and reviewed from unreviewed usages new (and IMHO
# more sensible) names are used: SOC_IMX31 and SOC_IMX35
config ARCH_MX1
	bool

@@ -27,12 +22,6 @@ config ARCH_MX25
config MACH_MX27
	bool

config ARCH_MX31
	bool

config ARCH_MX35
	bool

config SOC_IMX1
	bool
	select ARCH_MX1
@@ -72,7 +61,6 @@ config SOC_IMX31
	select CPU_V6
	select IMX_HAVE_PLATFORM_MXC_RNGA
	select ARCH_MXC_AUDMUX_V2
	select ARCH_MX31
	select MXC_AVIC
	select SMP_ON_UP if SMP

@@ -82,7 +70,6 @@ config SOC_IMX35
	select ARCH_MXC_IOMUX_V3
	select ARCH_MXC_AUDMUX_V2
	select HAVE_EPIT
	select ARCH_MX35
	select MXC_AVIC
	select SMP_ON_UP if SMP

+58 −51
Original line number Diff line number Diff line
@@ -33,6 +33,8 @@
static void imx3_idle(void)
{
	unsigned long reg = 0;

	if (!need_resched())
		__asm__ __volatile__(
			/* disable I and D cache */
			"mrc p15, 0, %0, c1, c0, 0\n"
@@ -56,6 +58,7 @@ static void imx3_idle(void)
			"orr %0, %0, #0x00000004\n"
			"mcr p15, 0, %0, c1, c0, 0\n"
			: "=r" (reg));
	local_irq_enable();
}

static void __iomem *imx3_ioremap(unsigned long phys_addr, size_t size,
@@ -108,6 +111,7 @@ void imx3_init_l2x0(void)
	l2x0_init(l2x0_base, 0x00030024, 0x00000000);
}

#ifdef CONFIG_SOC_IMX31
static struct map_desc mx31_io_desc[] __initdata = {
	imx_map_entry(MX31, X_MEMC, MT_DEVICE),
	imx_map_entry(MX31, AVIC, MT_DEVICE_NONSHARED),
@@ -126,33 +130,11 @@ void __init mx31_map_io(void)
	iotable_init(mx31_io_desc, ARRAY_SIZE(mx31_io_desc));
}

static struct map_desc mx35_io_desc[] __initdata = {
	imx_map_entry(MX35, X_MEMC, MT_DEVICE),
	imx_map_entry(MX35, AVIC, MT_DEVICE_NONSHARED),
	imx_map_entry(MX35, AIPS1, MT_DEVICE_NONSHARED),
	imx_map_entry(MX35, AIPS2, MT_DEVICE_NONSHARED),
	imx_map_entry(MX35, SPBA0, MT_DEVICE_NONSHARED),
};

void __init mx35_map_io(void)
{
	iotable_init(mx35_io_desc, ARRAY_SIZE(mx35_io_desc));
}

void __init imx31_init_early(void)
{
	mxc_set_cpu_type(MXC_CPU_MX31);
	mxc_arch_reset_init(MX31_IO_ADDRESS(MX31_WDOG_BASE_ADDR));
	imx_idle = imx3_idle;
	imx_ioremap = imx3_ioremap;
}

void __init imx35_init_early(void)
{
	mxc_set_cpu_type(MXC_CPU_MX35);
	mxc_iomux_v3_init(MX35_IO_ADDRESS(MX35_IOMUXC_BASE_ADDR));
	mxc_arch_reset_init(MX35_IO_ADDRESS(MX35_WDOG_BASE_ADDR));
	imx_idle = imx3_idle;
	pm_idle = imx3_idle;
	imx_ioremap = imx3_ioremap;
}

@@ -161,11 +143,6 @@ void __init mx31_init_irq(void)
	mxc_init_irq(MX31_IO_ADDRESS(MX31_AVIC_BASE_ADDR));
}

void __init mx35_init_irq(void)
{
	mxc_init_irq(MX35_IO_ADDRESS(MX35_AVIC_BASE_ADDR));
}

static struct sdma_script_start_addrs imx31_to1_sdma_script __initdata = {
	.per_2_per_addr = 1677,
};
@@ -199,6 +176,35 @@ void __init imx31_soc_init(void)

	imx_add_imx_sdma("imx31-sdma", MX31_SDMA_BASE_ADDR, MX31_INT_SDMA, &imx31_sdma_pdata);
}
#endif /* ifdef CONFIG_SOC_IMX31 */

#ifdef CONFIG_SOC_IMX35
static struct map_desc mx35_io_desc[] __initdata = {
	imx_map_entry(MX35, X_MEMC, MT_DEVICE),
	imx_map_entry(MX35, AVIC, MT_DEVICE_NONSHARED),
	imx_map_entry(MX35, AIPS1, MT_DEVICE_NONSHARED),
	imx_map_entry(MX35, AIPS2, MT_DEVICE_NONSHARED),
	imx_map_entry(MX35, SPBA0, MT_DEVICE_NONSHARED),
};

void __init mx35_map_io(void)
{
	iotable_init(mx35_io_desc, ARRAY_SIZE(mx35_io_desc));
}

void __init imx35_init_early(void)
{
	mxc_set_cpu_type(MXC_CPU_MX35);
	mxc_iomux_v3_init(MX35_IO_ADDRESS(MX35_IOMUXC_BASE_ADDR));
	mxc_arch_reset_init(MX35_IO_ADDRESS(MX35_WDOG_BASE_ADDR));
	pm_idle = imx3_idle;
	imx_ioremap = imx3_ioremap;
}

void __init mx35_init_irq(void)
{
	mxc_init_irq(MX35_IO_ADDRESS(MX35_AVIC_BASE_ADDR));
}

static struct sdma_script_start_addrs imx35_to1_sdma_script __initdata = {
	.ap_2_ap_addr = 642,
@@ -254,3 +260,4 @@ void __init imx35_soc_init(void)

	imx_add_imx_sdma("imx35-sdma", MX35_SDMA_BASE_ADDR, MX35_INT_SDMA, &imx35_sdma_pdata);
}
#endif /* ifdef CONFIG_SOC_IMX35 */
+3 −2
Original line number Diff line number Diff line
@@ -16,7 +16,7 @@
#include <linux/init.h>
#include <linux/module.h>
#include <mach/hardware.h>
#include <asm/io.h>
#include <linux/io.h>

static int mx5_cpu_rev = -1;

@@ -67,7 +67,8 @@ static int __init mx51_neon_fixup(void)
	if (!cpu_is_mx51())
		return 0;

	if (mx51_revision() < IMX_CHIP_REVISION_3_0 && (elf_hwcap & HWCAP_NEON)) {
	if (mx51_revision() < IMX_CHIP_REVISION_3_0 &&
			(elf_hwcap & HWCAP_NEON)) {
		elf_hwcap &= ~HWCAP_NEON;
		pr_info("Turning off NEON support, detected broken NEON implementation\n");
	}
+4 −2
Original line number Diff line number Diff line
@@ -23,7 +23,9 @@

static void imx5_idle(void)
{
	if (!need_resched())
		mx5_cpu_lp_set(WAIT_UNCLOCKED_POWER_OFF);
	local_irq_enable();
}

/*
@@ -89,7 +91,7 @@ void __init imx51_init_early(void)
	mxc_set_cpu_type(MXC_CPU_MX51);
	mxc_iomux_v3_init(MX51_IO_ADDRESS(MX51_IOMUXC_BASE_ADDR));
	mxc_arch_reset_init(MX51_IO_ADDRESS(MX51_WDOG1_BASE_ADDR));
	imx_idle = imx5_idle;
	pm_idle = imx5_idle;
}

void __init imx53_init_early(void)
Loading