git.openpandora.org
/
pandora-kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'master' into for-2.6.35
[pandora-kernel.git]
/
arch
/
arm
/
mach-davinci
/
mux.c
diff --git
a/arch/arm/mach-davinci/mux.c
b/arch/arm/mach-davinci/mux.c
index
f757e83
..
f34a8dc
100644
(file)
--- a/
arch/arm/mach-davinci/mux.c
+++ b/
arch/arm/mach-davinci/mux.c
@@
-22,6
+22,8
@@
#include <mach/mux.h>
#include <mach/common.h>
#include <mach/mux.h>
#include <mach/common.h>
+static void __iomem *pinmux_base;
+
/*
* Sets the DAVINCI MUX register based on the table
*/
/*
* Sets the DAVINCI MUX register based on the table
*/
@@
-29,14
+31,19
@@
int __init_or_module davinci_cfg_reg(const unsigned long index)
{
static DEFINE_SPINLOCK(mux_spin_lock);
struct davinci_soc_info *soc_info = &davinci_soc_info;
{
static DEFINE_SPINLOCK(mux_spin_lock);
struct davinci_soc_info *soc_info = &davinci_soc_info;
- void __iomem *base = soc_info->pinmux_base;
unsigned long flags;
const struct mux_config *cfg;
unsigned int reg_orig = 0, reg = 0;
unsigned int mask, warn = 0;
unsigned long flags;
const struct mux_config *cfg;
unsigned int reg_orig = 0, reg = 0;
unsigned int mask, warn = 0;
- if (!soc_info->pinmux_pins)
- BUG();
+ if (WARN_ON(!soc_info->pinmux_pins))
+ return -ENODEV;
+
+ if (!pinmux_base) {
+ pinmux_base = ioremap(soc_info->pinmux_base, SZ_4K);
+ if (WARN_ON(!pinmux_base))
+ return -ENOMEM;
+ }
if (index >= soc_info->pinmux_pins_num) {
printk(KERN_ERR "Invalid pin mux index: %lu (%lu)\n",
if (index >= soc_info->pinmux_pins_num) {
printk(KERN_ERR "Invalid pin mux index: %lu (%lu)\n",
@@
-57,7
+64,7
@@
int __init_or_module davinci_cfg_reg(const unsigned long index)
unsigned tmp1, tmp2;
spin_lock_irqsave(&mux_spin_lock, flags);
unsigned tmp1, tmp2;
spin_lock_irqsave(&mux_spin_lock, flags);
- reg_orig = __raw_readl(base + cfg->mux_reg);
+ reg_orig = __raw_readl(
pinmux_
base + cfg->mux_reg);
mask = (cfg->mask << cfg->mask_offset);
tmp1 = reg_orig & mask;
mask = (cfg->mask << cfg->mask_offset);
tmp1 = reg_orig & mask;
@@
-69,7
+76,7
@@
int __init_or_module davinci_cfg_reg(const unsigned long index)
if (tmp1 != tmp2)
warn = 1;
if (tmp1 != tmp2)
warn = 1;
- __raw_writel(reg, base + cfg->mux_reg);
+ __raw_writel(reg,
pinmux_
base + cfg->mux_reg);
spin_unlock_irqrestore(&mux_spin_lock, flags);
}
spin_unlock_irqrestore(&mux_spin_lock, flags);
}
@@
-91,7
+98,7
@@
int __init_or_module davinci_cfg_reg(const unsigned long index)
}
EXPORT_SYMBOL(davinci_cfg_reg);
}
EXPORT_SYMBOL(davinci_cfg_reg);
-int
da8xx_pinmux_setup
(const short pins[])
+int
__init_or_module davinci_cfg_reg_list
(const short pins[])
{
int i, error = -EINVAL;
{
int i, error = -EINVAL;