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

Commit 8c6d8319 authored by Shawn Guo's avatar Shawn Guo Committed by Sascha Hauer
Browse files

arm/imx: remove imx_idle hook and use pm_idle instead



The patch removes imx_idle hook and use pm_idle instead to get imx
arch_idle prepared for the cleanup.  It's suggested by Russel King
as below.

> The final removal of mach/system.h depends on getting rid of the arch_idle
> thing.  While going through these headers, I was dismayed to find these:
>
> arch/arm/mach-s3c2410/include/mach/system.h:void (*s3c24xx_idle)(void);
> arch/arm/plat-mxc/include/mach/system.h:extern void (*imx_idle)(void);
>
> when we have a perfectly good pm_idle hook already in place - so there's
> no excuse for these especially when other platforms are already using
> pm_idle to hook their platform specific idle function into.  This is
> something that better be gone at the next merge window!

Suggested-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
Signed-off-by: default avatarShawn Guo <shawn.guo@linaro.org>
Acked-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
Signed-off-by: default avatarSascha Hauer <s.hauer@pengutronix.de>
parent 6a53fc53
Loading
Loading
Loading
Loading
+28 −25
Original line number Original line Diff line number Diff line
@@ -33,6 +33,8 @@
static void imx3_idle(void)
static void imx3_idle(void)
{
{
	unsigned long reg = 0;
	unsigned long reg = 0;

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


static void __iomem *imx3_ioremap(unsigned long phys_addr, size_t size,
static void __iomem *imx3_ioremap(unsigned long phys_addr, size_t size,
@@ -143,7 +146,7 @@ void __init imx31_init_early(void)
{
{
	mxc_set_cpu_type(MXC_CPU_MX31);
	mxc_set_cpu_type(MXC_CPU_MX31);
	mxc_arch_reset_init(MX31_IO_ADDRESS(MX31_WDOG_BASE_ADDR));
	mxc_arch_reset_init(MX31_IO_ADDRESS(MX31_WDOG_BASE_ADDR));
	imx_idle = imx3_idle;
	pm_idle = imx3_idle;
	imx_ioremap = imx3_ioremap;
	imx_ioremap = imx3_ioremap;
}
}


@@ -152,7 +155,7 @@ void __init imx35_init_early(void)
	mxc_set_cpu_type(MXC_CPU_MX35);
	mxc_set_cpu_type(MXC_CPU_MX35);
	mxc_iomux_v3_init(MX35_IO_ADDRESS(MX35_IOMUXC_BASE_ADDR));
	mxc_iomux_v3_init(MX35_IO_ADDRESS(MX35_IOMUXC_BASE_ADDR));
	mxc_arch_reset_init(MX35_IO_ADDRESS(MX35_WDOG_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;
	imx_ioremap = imx3_ioremap;
}
}


+4 −2
Original line number Original line Diff line number Diff line
@@ -23,7 +23,9 @@


static void imx5_idle(void)
static void imx5_idle(void)
{
{
	if (!need_resched())
		mx5_cpu_lp_set(WAIT_UNCLOCKED_POWER_OFF);
		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_set_cpu_type(MXC_CPU_MX51);
	mxc_iomux_v3_init(MX51_IO_ADDRESS(MX51_IOMUXC_BASE_ADDR));
	mxc_iomux_v3_init(MX51_IO_ADDRESS(MX51_IOMUXC_BASE_ADDR));
	mxc_arch_reset_init(MX51_IO_ADDRESS(MX51_WDOG1_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)
void __init imx53_init_early(void)
+0 −1
Original line number Original line Diff line number Diff line
@@ -85,7 +85,6 @@ enum mxc_cpu_pwr_mode {
};
};


extern void mx5_cpu_lp_set(enum mxc_cpu_pwr_mode mode);
extern void mx5_cpu_lp_set(enum mxc_cpu_pwr_mode mode);
extern void (*imx_idle)(void);
extern void imx_print_silicon_rev(const char *cpu, int srev);
extern void imx_print_silicon_rev(const char *cpu, int srev);


void avic_handle_irq(struct pt_regs *);
void avic_handle_irq(struct pt_regs *);
+1 −6
Original line number Original line Diff line number Diff line
@@ -17,13 +17,8 @@
#ifndef __ASM_ARCH_MXC_SYSTEM_H__
#ifndef __ASM_ARCH_MXC_SYSTEM_H__
#define __ASM_ARCH_MXC_SYSTEM_H__
#define __ASM_ARCH_MXC_SYSTEM_H__


extern void (*imx_idle)(void);

static inline void arch_idle(void)
static inline void arch_idle(void)
{
{
	if (imx_idle != NULL)
		(imx_idle)();
	else
	cpu_do_idle();
	cpu_do_idle();
}
}


+0 −1
Original line number Original line Diff line number Diff line
@@ -28,7 +28,6 @@
#include <asm/system.h>
#include <asm/system.h>
#include <asm/mach-types.h>
#include <asm/mach-types.h>


void (*imx_idle)(void) = NULL;
void __iomem *(*imx_ioremap)(unsigned long, size_t, unsigned int) = NULL;
void __iomem *(*imx_ioremap)(unsigned long, size_t, unsigned int) = NULL;


static void __iomem *wdog_base;
static void __iomem *wdog_base;