Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
arch
arm
plat-mxc
iomux-v3.c
Go to the documentation of this file.
1
/*
2
* Copyright 2004-2006 Freescale Semiconductor, Inc. All Rights Reserved.
3
* Copyright (C) 2008 by Sascha Hauer <
[email protected]
>
4
* Copyright (C) 2009 by Jan Weitzel Phytec Messtechnik GmbH,
5
* <
[email protected]
>
6
*
7
* This program is free software; you can redistribute it and/or
8
* modify it under the terms of the GNU General Public License
9
* as published by the Free Software Foundation; either version 2
10
* of the License, or (at your option) any later version.
11
* This program is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
* GNU General Public License for more details.
15
*
16
* You should have received a copy of the GNU General Public License
17
* along with this program; if not, write to the Free Software
18
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
* MA 02110-1301, USA.
20
*/
21
#include <linux/errno.h>
22
#include <
linux/init.h
>
23
#include <linux/kernel.h>
24
#include <linux/module.h>
25
#include <linux/string.h>
26
#include <
linux/gpio.h
>
27
28
#include <mach/hardware.h>
29
#include <
asm/mach/map.h
>
30
#include <
mach/iomux-v3.h
>
31
32
static
void
__iomem
*
base
;
33
34
/*
35
* configures a single pad in the iomuxer
36
*/
37
int
mxc_iomux_v3_setup_pad
(
iomux_v3_cfg_t
pad
)
38
{
39
u32
mux_ctrl_ofs = (pad &
MUX_CTRL_OFS_MASK
) >>
MUX_CTRL_OFS_SHIFT
;
40
u32
mux_mode = (pad &
MUX_MODE_MASK
) >>
MUX_MODE_SHIFT
;
41
u32
sel_input_ofs = (pad &
MUX_SEL_INPUT_OFS_MASK
) >>
MUX_SEL_INPUT_OFS_SHIFT
;
42
u32
sel_input = (pad &
MUX_SEL_INPUT_MASK
) >>
MUX_SEL_INPUT_SHIFT
;
43
u32
pad_ctrl_ofs = (pad &
MUX_PAD_CTRL_OFS_MASK
) >>
MUX_PAD_CTRL_OFS_SHIFT
;
44
u32
pad_ctrl = (pad &
MUX_PAD_CTRL_MASK
) >>
MUX_PAD_CTRL_SHIFT
;
45
46
if
(mux_ctrl_ofs)
47
__raw_writel
(mux_mode,
base
+ mux_ctrl_ofs);
48
49
if
(sel_input_ofs)
50
__raw_writel
(sel_input,
base
+ sel_input_ofs);
51
52
if
(!(pad_ctrl &
NO_PAD_CTRL
) && pad_ctrl_ofs)
53
__raw_writel
(pad_ctrl,
base
+ pad_ctrl_ofs);
54
55
return
0;
56
}
57
EXPORT_SYMBOL
(
mxc_iomux_v3_setup_pad
);
58
59
int
mxc_iomux_v3_setup_multiple_pads
(
iomux_v3_cfg_t
*pad_list,
unsigned
count
)
60
{
61
iomux_v3_cfg_t
*
p
= pad_list;
62
int
i
;
63
int
ret
;
64
65
for
(i = 0; i <
count
; i++) {
66
ret =
mxc_iomux_v3_setup_pad
(*p);
67
if
(ret)
68
return
ret
;
69
p++;
70
}
71
return
0;
72
}
73
EXPORT_SYMBOL
(
mxc_iomux_v3_setup_multiple_pads
);
74
75
void
mxc_iomux_v3_init
(
void
__iomem
*iomux_v3_base)
76
{
77
base
= iomux_v3_base;
78
}
Generated on Thu Jan 10 2013 13:03:12 for Linux Kernel by
1.8.2