Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
52aa8c53
Commit
52aa8c53
authored
Nov 30, 2010
by
Tony Lindgren
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'ctrl-wip/mux-omap4-v4' of
git://gitorious.org/omap-pm/linux
into omap-for-linus
parents
55a4e789
032a6424
Changes
12
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
2310 additions
and
147 deletions
+2310
-147
arch/arm/mach-omap2/Kconfig
arch/arm/mach-omap2/Kconfig
+10
-0
arch/arm/mach-omap2/Makefile
arch/arm/mach-omap2/Makefile
+1
-0
arch/arm/mach-omap2/board-4430sdp.c
arch/arm/mach-omap2/board-4430sdp.c
+14
-0
arch/arm/mach-omap2/board-omap4panda.c
arch/arm/mach-omap2/board-omap4panda.c
+16
-0
arch/arm/mach-omap2/board-rx51-peripherals.c
arch/arm/mach-omap2/board-rx51-peripherals.c
+9
-3
arch/arm/mach-omap2/mux.c
arch/arm/mach-omap2/mux.c
+249
-120
arch/arm/mach-omap2/mux.h
arch/arm/mach-omap2/mux.h
+71
-12
arch/arm/mach-omap2/mux2420.c
arch/arm/mach-omap2/mux2420.c
+6
-4
arch/arm/mach-omap2/mux2430.c
arch/arm/mach-omap2/mux2430.c
+6
-4
arch/arm/mach-omap2/mux34xx.c
arch/arm/mach-omap2/mux34xx.c
+5
-4
arch/arm/mach-omap2/mux44xx.c
arch/arm/mach-omap2/mux44xx.c
+1625
-0
arch/arm/mach-omap2/mux44xx.h
arch/arm/mach-omap2/mux44xx.h
+298
-0
No files found.
arch/arm/mach-omap2/Kconfig
View file @
52aa8c53
...
...
@@ -85,6 +85,12 @@ config OMAP_PACKAGE_CUS
config OMAP_PACKAGE_CBP
bool
config OMAP_PACKAGE_CBL
bool
config OMAP_PACKAGE_CBS
bool
comment "OMAP Board Type"
depends on ARCH_OMAP2PLUS
...
...
@@ -282,11 +288,15 @@ config MACH_OMAP_4430SDP
bool "OMAP 4430 SDP board"
default y
depends on ARCH_OMAP4
select OMAP_PACKAGE_CBL
select OMAP_PACKAGE_CBS
config MACH_OMAP4_PANDA
bool "OMAP4 Panda Board"
default y
depends on ARCH_OMAP4
select OMAP_PACKAGE_CBL
select OMAP_PACKAGE_CBS
config OMAP3_EMU
bool "OMAP3 debugging peripherals"
...
...
arch/arm/mach-omap2/Makefile
View file @
52aa8c53
...
...
@@ -42,6 +42,7 @@ AFLAGS_sram34xx.o :=-Wa,-march=armv7-a
obj-$(CONFIG_ARCH_OMAP2420)
+=
mux2420.o
obj-$(CONFIG_ARCH_OMAP2430)
+=
mux2430.o
obj-$(CONFIG_ARCH_OMAP3)
+=
mux34xx.o
obj-$(CONFIG_ARCH_OMAP4)
+=
mux44xx.o
# SMS/SDRC
obj-$(CONFIG_ARCH_OMAP2)
+=
sdrc2xxx.o
...
...
arch/arm/mach-omap2/board-4430sdp.c
View file @
52aa8c53
...
...
@@ -35,6 +35,7 @@
#include <plat/usb.h>
#include <plat/mmc.h>
#include "mux.h"
#include "hsmmc.h"
#include "timer-gp.h"
#include "control.h"
...
...
@@ -505,9 +506,22 @@ static void __init omap_sfh7741prox_init(void)
}
}
#ifdef CONFIG_OMAP_MUX
static
struct
omap_board_mux
board_mux
[]
__initdata
=
{
{
.
reg_offset
=
OMAP_MUX_TERMINATOR
},
};
#else
#define board_mux NULL
#endif
static
void
__init
omap_4430sdp_init
(
void
)
{
int
status
;
int
package
=
OMAP_PACKAGE_CBS
;
if
(
omap_rev
()
==
OMAP4430_REV_ES1_0
)
package
=
OMAP_PACKAGE_CBL
;
omap4_mux_init
(
board_mux
,
package
);
omap4_i2c_init
();
omap_sfh7741prox_init
();
...
...
arch/arm/mach-omap2/board-omap4panda.c
View file @
52aa8c53
...
...
@@ -40,6 +40,7 @@
#include "hsmmc.h"
#include "control.h"
#include "mux.h"
#define GPIO_HUB_POWER 1
#define GPIO_HUB_NRESET 62
...
...
@@ -368,8 +369,23 @@ static int __init omap4_panda_i2c_init(void)
omap_register_i2c_bus
(
4
,
400
,
NULL
,
0
);
return
0
;
}
#ifdef CONFIG_OMAP_MUX
static
struct
omap_board_mux
board_mux
[]
__initdata
=
{
{
.
reg_offset
=
OMAP_MUX_TERMINATOR
},
};
#else
#define board_mux NULL
#endif
static
void
__init
omap4_panda_init
(
void
)
{
int
package
=
OMAP_PACKAGE_CBS
;
if
(
omap_rev
()
==
OMAP4430_REV_ES1_0
)
package
=
OMAP_PACKAGE_CBL
;
omap4_mux_init
(
board_mux
,
package
);
omap4_panda_i2c_init
();
platform_add_devices
(
panda_devices
,
ARRAY_SIZE
(
panda_devices
));
omap_serial_init
();
...
...
arch/arm/mach-omap2/board-rx51-peripherals.c
View file @
52aa8c53
...
...
@@ -293,6 +293,8 @@ static struct omap_board_mux rx51_mmc2_off_mux[] = {
{
.
reg_offset
=
OMAP_MUX_TERMINATOR
},
};
static
struct
omap_mux_partition
*
partition
;
/*
* Current flows to eMMC when eMMC is off and the data lines are pulled up,
* so pull them down. N.B. we pull 8 lines because we are using 8 lines.
...
...
@@ -300,9 +302,9 @@ static struct omap_board_mux rx51_mmc2_off_mux[] = {
static
void
rx51_mmc2_remux
(
struct
device
*
dev
,
int
slot
,
int
power_on
)
{
if
(
power_on
)
omap_mux_write_array
(
rx51_mmc2_on_mux
);
omap_mux_write_array
(
partition
,
rx51_mmc2_on_mux
);
else
omap_mux_write_array
(
rx51_mmc2_off_mux
);
omap_mux_write_array
(
partition
,
rx51_mmc2_off_mux
);
}
static
struct
omap2_hsmmc_info
mmc
[]
__initdata
=
{
...
...
@@ -922,7 +924,11 @@ void __init rx51_peripherals_init(void)
rx51_init_wl1251
();
spi_register_board_info
(
rx51_peripherals_spi_board_info
,
ARRAY_SIZE
(
rx51_peripherals_spi_board_info
));
omap2_hsmmc_init
(
mmc
);
partition
=
omap_mux_get
(
"core"
);
if
(
partition
)
omap2_hsmmc_init
(
mmc
);
platform_device_register
(
&
rx51_charger_device
);
}
arch/arm/mach-omap2/mux.c
View file @
52aa8c53
This diff is collapsed.
Click to expand it.
arch/arm/mach-omap2/mux.h
View file @
52aa8c53
/*
* Copyright (C) 2009 Nokia
* Copyright (C) 2009 Texas Instruments
* Copyright (C) 2009
-2010
Texas Instruments
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
...
...
@@ -10,6 +10,7 @@
#include "mux2420.h"
#include "mux2430.h"
#include "mux34xx.h"
#include "mux44xx.h"
#define OMAP_MUX_TERMINATOR 0xffff
...
...
@@ -37,6 +38,9 @@
#define OMAP_OFF_PULL_UP (1 << 13)
#define OMAP_WAKEUP_EN (1 << 14)
/* 44xx specific mux bit defines */
#define OMAP_WAKEUP_EVENT (1 << 15)
/* Active pin states */
#define OMAP_PIN_OUTPUT 0
#define OMAP_PIN_INPUT OMAP_INPUT_EN
...
...
@@ -56,8 +60,10 @@
#define OMAP_MODE_GPIO(x) (((x) & OMAP_MUX_MODE7) == OMAP_MUX_MODE4)
/* Flags for omap_mux_init */
/* Flags for omap
X
_mux_init */
#define OMAP_PACKAGE_MASK 0xffff
#define OMAP_PACKAGE_CBS 8
/* 547-pin 0.40 0.40 */
#define OMAP_PACKAGE_CBL 7
/* 547-pin 0.40 0.40 */
#define OMAP_PACKAGE_CBP 6
/* 515-pin 0.40 0.50 */
#define OMAP_PACKAGE_CUS 5
/* 423-pin 0.65 */
#define OMAP_PACKAGE_CBB 4
/* 515-pin 0.40 0.50 */
...
...
@@ -66,14 +72,47 @@
#define OMAP_PACKAGE_ZAF 1
/* 2420 447-pin SIP */
#define OMAP_MUX_NR_MODES 8
/* Available modes */
#define OMAP_MUX_NR_SIDES 2
/* Bottom & top */
#define OMAP_MUX_NR_MODES 8
/* Available modes */
#define OMAP_MUX_NR_SIDES 2
/* Bottom & top */
/*
* omap_mux_init flags definition:
*
* OMAP_MUX_REG_8BIT: Ensure that access to padconf is done in 8 bits.
* The default value is 16 bits.
* OMAP_MUX_GPIO_IN_MODE3: The GPIO is selected in mode3.
* The default is mode4.
*/
#define OMAP_MUX_REG_8BIT (1 << 0)
#define OMAP_MUX_GPIO_IN_MODE3 (1 << 1)
/**
* struct mux_partition - contain partition related information
* @name: name of the current partition
* @flags: flags specific to this partition
* @phys: physical address
* @size: partition size
* @base: virtual address after ioremap
* @muxmodes: list of nodes that belong to a partition
* @node: list node for the partitions linked list
*/
struct
omap_mux_partition
{
const
char
*
name
;
u32
flags
;
u32
phys
;
u32
size
;
void
__iomem
*
base
;
struct
list_head
muxmodes
;
struct
list_head
node
;
};
/**
* struct omap_mux - data for omap mux register offset and it's value
* @reg_offset: mux register offset from the mux base
* @gpio: GPIO number
* @muxnames: available signal modes for a ball
* @balls: available balls on the package
* @partition: mux partition
*/
struct
omap_mux
{
u16
reg_offset
;
...
...
@@ -150,29 +189,40 @@ u16 omap_mux_get_gpio(int gpio);
*/
void
omap_mux_set_gpio
(
u16
val
,
int
gpio
);
/**
* omap_mux_get() - get a mux partition by name
* @name: Name of the mux partition
*
*/
struct
omap_mux_partition
*
omap_mux_get
(
const
char
*
name
);
/**
* omap_mux_read() - read mux register
* @partition: Mux partition
* @mux_offset: Offset of the mux register
*
*/
u16
omap_mux_read
(
u16
mux_offset
);
u16
omap_mux_read
(
struct
omap_mux_partition
*
p
,
u16
mux_offset
);
/**
* omap_mux_write() - write mux register
* @partition: Mux partition
* @val: New mux register value
* @mux_offset: Offset of the mux register
*
* This should be only needed for dynamic remuxing of non-gpio signals.
*/
void
omap_mux_write
(
u16
val
,
u16
mux_offset
);
void
omap_mux_write
(
struct
omap_mux_partition
*
p
,
u16
val
,
u16
mux_offset
);
/**
* omap_mux_write_array() - write an array of mux registers
* @partition: Mux partition
* @board_mux: Array of mux registers terminated by MAP_MUX_TERMINATOR
*
* This should be only needed for dynamic remuxing of non-gpio signals.
*/
void
omap_mux_write_array
(
struct
omap_board_mux
*
board_mux
);
void
omap_mux_write_array
(
struct
omap_mux_partition
*
p
,
struct
omap_board_mux
*
board_mux
);
/**
* omap2420_mux_init() - initialize mux system with board specific set
...
...
@@ -195,11 +245,20 @@ int omap2430_mux_init(struct omap_board_mux *board_mux, int flags);
*/
int
omap3_mux_init
(
struct
omap_board_mux
*
board_mux
,
int
flags
);
/**
* omap4_mux_init() - initialize mux system with board specific set
* @board_mux: Board specific mux table
* @flags: OMAP package type used for the board
*/
int
omap4_mux_init
(
struct
omap_board_mux
*
board_mux
,
int
flags
);
/**
* omap_mux_init - private mux init function, do not call
*/
int
omap_mux_init
(
u32
mux_pbase
,
u32
mux_size
,
struct
omap_mux
*
superset
,
struct
omap_mux
*
package_subset
,
struct
omap_board_mux
*
board_mux
,
struct
omap_ball
*
package_balls
);
int
omap_mux_init
(
const
char
*
name
,
u32
flags
,
u32
mux_pbase
,
u32
mux_size
,
struct
omap_mux
*
superset
,
struct
omap_mux
*
package_subset
,
struct
omap_board_mux
*
board_mux
,
struct
omap_ball
*
package_balls
);
arch/arm/mach-omap2/mux2420.c
View file @
52aa8c53
...
...
@@ -678,11 +678,13 @@ int __init omap2420_mux_init(struct omap_board_mux *board_subset, int flags)
case
OMAP_PACKAGE_ZAF
:
/* REVISIT: Please add data */
default:
pr_warning
(
"mux: No ball data available for omap2420 package
\n
"
);
pr_warning
(
"%s: No ball data available for omap2420 package
\n
"
,
__func__
);
}
return
omap_mux_init
(
OMAP2420_CONTROL_PADCONF_MUX_PBASE
,
return
omap_mux_init
(
"core"
,
OMAP_MUX_REG_8BIT
|
OMAP_MUX_GPIO_IN_MODE3
,
OMAP2420_CONTROL_PADCONF_MUX_PBASE
,
OMAP2420_CONTROL_PADCONF_MUX_SIZE
,
omap2420_muxmodes
,
NULL
,
board_subset
,
package_balls
);
omap2420_muxmodes
,
NULL
,
board_subset
,
package_balls
);
}
arch/arm/mach-omap2/mux2430.c
View file @
52aa8c53
...
...
@@ -781,11 +781,13 @@ int __init omap2430_mux_init(struct omap_board_mux *board_subset, int flags)
package_balls
=
omap2430_pop_ball
;
break
;
default:
pr_warning
(
"mux: No ball data available for omap2420 package
\n
"
);
pr_warning
(
"%s: No ball data available for omap2420 package
\n
"
,
__func__
);
}
return
omap_mux_init
(
OMAP2430_CONTROL_PADCONF_MUX_PBASE
,
return
omap_mux_init
(
"core"
,
OMAP_MUX_REG_8BIT
|
OMAP_MUX_GPIO_IN_MODE3
,
OMAP2430_CONTROL_PADCONF_MUX_PBASE
,
OMAP2430_CONTROL_PADCONF_MUX_SIZE
,
omap2430_muxmodes
,
NULL
,
board_subset
,
package_balls
);
omap2430_muxmodes
,
NULL
,
board_subset
,
package_balls
);
}
arch/arm/mach-omap2/mux34xx.c
View file @
52aa8c53
...
...
@@ -2049,12 +2049,13 @@ int __init omap3_mux_init(struct omap_board_mux *board_subset, int flags)
package_balls
=
omap36xx_cbp_ball
;
break
;
default:
pr
intk
(
KERN_ERR
"mux: Unknown omap package, mux disabled
\n
"
);
pr
_err
(
"%s Unknown omap package, mux disabled
\n
"
,
__func__
);
return
-
EINVAL
;
}
return
omap_mux_init
(
OMAP3_CONTROL_PADCONF_MUX_PBASE
,
return
omap_mux_init
(
"core"
,
0
,
OMAP3_CONTROL_PADCONF_MUX_PBASE
,
OMAP3_CONTROL_PADCONF_MUX_SIZE
,
omap3_muxmodes
,
package_subset
,
board_subset
,
package_balls
);
omap3_muxmodes
,
package_subset
,
board_subset
,
package_balls
);
}
arch/arm/mach-omap2/mux44xx.c
0 → 100644
View file @
52aa8c53
This diff is collapsed.
Click to expand it.
arch/arm/mach-omap2/mux44xx.h
0 → 100644
View file @
52aa8c53
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment