mirror of
https://github.com/torvalds/linux.git
synced 2024-12-04 18:13:04 +00:00
ARM: imx: merge audmux-v1 and audmux-v2
It merges audmux-v1 and audmux-v2 under arch/arm/plat-mxc into one. Signed-off-by: Shawn Guo <shawn.guo@linaro.org> Acked-by: Sascha Hauer <s.hauer@pengutronix.de> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This commit is contained in:
parent
17ec38a8b6
commit
2405fc9728
@ -46,7 +46,7 @@ config SOC_IMX21
|
||||
bool
|
||||
select MACH_MX21
|
||||
select CPU_ARM926T
|
||||
select ARCH_MXC_AUDMUX_V1
|
||||
select ARCH_MXC_AUDMUX
|
||||
select IMX_HAVE_DMA_V1
|
||||
select IMX_HAVE_IOMUX_V1
|
||||
select MXC_AVIC
|
||||
@ -55,7 +55,7 @@ config SOC_IMX25
|
||||
bool
|
||||
select ARCH_MX25
|
||||
select CPU_ARM926T
|
||||
select ARCH_MXC_AUDMUX_V2
|
||||
select ARCH_MXC_AUDMUX
|
||||
select ARCH_MXC_IOMUX_V3
|
||||
select MXC_AVIC
|
||||
|
||||
@ -63,7 +63,7 @@ config SOC_IMX27
|
||||
bool
|
||||
select MACH_MX27
|
||||
select CPU_ARM926T
|
||||
select ARCH_MXC_AUDMUX_V1
|
||||
select ARCH_MXC_AUDMUX
|
||||
select IMX_HAVE_DMA_V1
|
||||
select IMX_HAVE_IOMUX_V1
|
||||
select MXC_AVIC
|
||||
@ -72,7 +72,7 @@ config SOC_IMX31
|
||||
bool
|
||||
select CPU_V6
|
||||
select IMX_HAVE_PLATFORM_MXC_RNGA
|
||||
select ARCH_MXC_AUDMUX_V2
|
||||
select ARCH_MXC_AUDMUX
|
||||
select MXC_AVIC
|
||||
select SMP_ON_UP if SMP
|
||||
|
||||
@ -80,7 +80,7 @@ config SOC_IMX35
|
||||
bool
|
||||
select CPU_V6
|
||||
select ARCH_MXC_IOMUX_V3
|
||||
select ARCH_MXC_AUDMUX_V2
|
||||
select ARCH_MXC_AUDMUX
|
||||
select HAVE_EPIT
|
||||
select MXC_AVIC
|
||||
select SMP_ON_UP if SMP
|
||||
@ -89,7 +89,7 @@ config SOC_IMX5
|
||||
select CPU_V7
|
||||
select MXC_TZIC
|
||||
select ARCH_MXC_IOMUX_V3
|
||||
select ARCH_MXC_AUDMUX_V2
|
||||
select ARCH_MXC_AUDMUX
|
||||
select ARCH_HAS_CPUFREQ
|
||||
select ARCH_MX5
|
||||
bool
|
||||
|
@ -88,10 +88,7 @@ config IMX_HAVE_IOMUX_V1
|
||||
config ARCH_MXC_IOMUX_V3
|
||||
bool
|
||||
|
||||
config ARCH_MXC_AUDMUX_V1
|
||||
bool
|
||||
|
||||
config ARCH_MXC_AUDMUX_V2
|
||||
config ARCH_MXC_AUDMUX
|
||||
bool
|
||||
|
||||
config IRAM_ALLOC
|
||||
|
@ -14,8 +14,7 @@ obj-$(CONFIG_IRAM_ALLOC) += iram_alloc.o
|
||||
obj-$(CONFIG_MXC_PWM) += pwm.o
|
||||
obj-$(CONFIG_MXC_ULPI) += ulpi.o
|
||||
obj-$(CONFIG_MXC_USE_EPIT) += epit.o
|
||||
obj-$(CONFIG_ARCH_MXC_AUDMUX_V1) += audmux-v1.o
|
||||
obj-$(CONFIG_ARCH_MXC_AUDMUX_V2) += audmux-v2.o
|
||||
obj-$(CONFIG_ARCH_MXC_AUDMUX) += audmux.o
|
||||
obj-$(CONFIG_MXC_DEBUG_BOARD) += 3ds_debugboard.o
|
||||
obj-$(CONFIG_CPU_FREQ_IMX) += cpufreq.o
|
||||
ifdef CONFIG_SND_IMX_SOC
|
||||
|
@ -1,64 +0,0 @@
|
||||
/*
|
||||
* Copyright 2009 Pengutronix, Sascha Hauer <s.hauer@pengutronix.de>
|
||||
*
|
||||
* Initial development of this code was funded by
|
||||
* Phytec Messtechnik GmbH, http://www.phytec.de
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*/
|
||||
|
||||
#include <linux/module.h>
|
||||
#include <linux/err.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/clk.h>
|
||||
#include <mach/audmux.h>
|
||||
#include <mach/hardware.h>
|
||||
|
||||
static void __iomem *audmux_base;
|
||||
|
||||
static unsigned char port_mapping[] = {
|
||||
0x0, 0x4, 0x8, 0x10, 0x14, 0x1c,
|
||||
};
|
||||
|
||||
int mxc_audmux_v1_configure_port(unsigned int port, unsigned int pcr)
|
||||
{
|
||||
if (!audmux_base) {
|
||||
printk("%s: not configured\n", __func__);
|
||||
return -ENOSYS;
|
||||
}
|
||||
|
||||
if (port >= ARRAY_SIZE(port_mapping))
|
||||
return -EINVAL;
|
||||
|
||||
writel(pcr, audmux_base + port_mapping[port]);
|
||||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(mxc_audmux_v1_configure_port);
|
||||
|
||||
static int mxc_audmux_v1_init(void)
|
||||
{
|
||||
#ifdef CONFIG_MACH_MX21
|
||||
if (cpu_is_mx21())
|
||||
audmux_base = MX21_IO_ADDRESS(MX21_AUDMUX_BASE_ADDR);
|
||||
else
|
||||
#endif
|
||||
#ifdef CONFIG_MACH_MX27
|
||||
if (cpu_is_mx27())
|
||||
audmux_base = MX27_IO_ADDRESS(MX27_AUDMUX_BASE_ADDR);
|
||||
else
|
||||
#endif
|
||||
(void)0;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
postcore_initcall(mxc_audmux_v1_init);
|
@ -165,6 +165,24 @@ static inline void audmux_debugfs_init(void)
|
||||
}
|
||||
#endif
|
||||
|
||||
static const uint8_t port_mapping[] = {
|
||||
0x0, 0x4, 0x8, 0x10, 0x14, 0x1c,
|
||||
};
|
||||
|
||||
int mxc_audmux_v1_configure_port(unsigned int port, unsigned int pcr)
|
||||
{
|
||||
if (!audmux_base)
|
||||
return -ENOSYS;
|
||||
|
||||
if (port >= ARRAY_SIZE(port_mapping))
|
||||
return -EINVAL;
|
||||
|
||||
writel(pcr, audmux_base + port_mapping[port]);
|
||||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(mxc_audmux_v1_configure_port);
|
||||
|
||||
int mxc_audmux_v2_configure_port(unsigned int port, unsigned int ptcr,
|
||||
unsigned int pdcr)
|
||||
{
|
||||
@ -184,7 +202,7 @@ int mxc_audmux_v2_configure_port(unsigned int port, unsigned int ptcr,
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(mxc_audmux_v2_configure_port);
|
||||
|
||||
static int mxc_audmux_v2_init(void)
|
||||
static int mxc_audmux_init(void)
|
||||
{
|
||||
int ret;
|
||||
if (cpu_is_mx51()) {
|
||||
@ -209,11 +227,16 @@ static int mxc_audmux_v2_init(void)
|
||||
return ret;
|
||||
}
|
||||
audmux_base = MX25_IO_ADDRESS(MX25_AUDMUX_BASE_ADDR);
|
||||
} else if (cpu_is_mx27()) {
|
||||
audmux_base = MX27_IO_ADDRESS(MX27_AUDMUX_BASE_ADDR);
|
||||
} else if (cpu_is_mx21()) {
|
||||
audmux_base = MX21_IO_ADDRESS(MX21_AUDMUX_BASE_ADDR);
|
||||
}
|
||||
|
||||
audmux_debugfs_init();
|
||||
if (!cpu_is_mx2())
|
||||
audmux_debugfs_init();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
postcore_initcall(mxc_audmux_v2_init);
|
||||
postcore_initcall(mxc_audmux_init);
|
Loading…
Reference in New Issue
Block a user