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
1f10478c
Commit
1f10478c
authored
Sep 14, 2012
by
Stephen Warren
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'for-3.7/board-removal' into for-3.7/cleanup2
parents
a5b64ce6
be972c32
Changes
19
Show whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
328 additions
and
1368 deletions
+328
-1368
Documentation/devicetree/bindings/regulator/tps6586x.txt
Documentation/devicetree/bindings/regulator/tps6586x.txt
+39
-26
arch/arm/boot/dts/tegra20-harmony.dts
arch/arm/boot/dts/tegra20-harmony.dts
+220
-0
arch/arm/mach-tegra/Kconfig
arch/arm/mach-tegra/Kconfig
+0
-19
arch/arm/mach-tegra/Makefile
arch/arm/mach-tegra/Makefile
+2
-9
arch/arm/mach-tegra/board-dt-tegra20.c
arch/arm/mach-tegra/board-dt-tegra20.c
+4
-19
arch/arm/mach-tegra/board-harmony-pcie.c
arch/arm/mach-tegra/board-harmony-pcie.c
+30
-19
arch/arm/mach-tegra/board-harmony-pinmux.c
arch/arm/mach-tegra/board-harmony-pinmux.c
+0
-156
arch/arm/mach-tegra/board-harmony-power.c
arch/arm/mach-tegra/board-harmony-power.c
+0
-148
arch/arm/mach-tegra/board-harmony.c
arch/arm/mach-tegra/board-harmony.c
+0
-197
arch/arm/mach-tegra/board-harmony.h
arch/arm/mach-tegra/board-harmony.h
+0
-41
arch/arm/mach-tegra/board-paz00-pinmux.c
arch/arm/mach-tegra/board-paz00-pinmux.c
+0
-156
arch/arm/mach-tegra/board-paz00.c
arch/arm/mach-tegra/board-paz00.c
+0
-192
arch/arm/mach-tegra/board-paz00.h
arch/arm/mach-tegra/board-paz00.h
+1
-16
arch/arm/mach-tegra/board-trimslice-pinmux.c
arch/arm/mach-tegra/board-trimslice-pinmux.c
+0
-155
arch/arm/mach-tegra/board-trimslice.c
arch/arm/mach-tegra/board-trimslice.c
+0
-183
arch/arm/mach-tegra/board-trimslice.h
arch/arm/mach-tegra/board-trimslice.h
+0
-30
drivers/mfd/tps6586x.c
drivers/mfd/tps6586x.c
+13
-0
drivers/regulator/tps6586x-regulator.c
drivers/regulator/tps6586x-regulator.c
+18
-2
include/linux/mfd/tps6586x.h
include/linux/mfd/tps6586x.h
+1
-0
No files found.
Documentation/devicetree/bindings/regulator/tps6586x.txt
View file @
1f10478c
...
@@ -8,7 +8,8 @@ Required properties:
...
@@ -8,7 +8,8 @@ Required properties:
- gpio-controller: mark the device as a GPIO controller
- gpio-controller: mark the device as a GPIO controller
- regulators: list of regulators provided by this controller, must have
- regulators: list of regulators provided by this controller, must have
property "regulator-compatible" to match their hardware counterparts:
property "regulator-compatible" to match their hardware counterparts:
sm[0-2], ldo[0-9] and ldo_rtc
sys, sm[0-2], ldo[0-9] and ldo_rtc
- sys-supply: The input supply for SYS.
- vin-sm0-supply: The input supply for the SM0.
- vin-sm0-supply: The input supply for the SM0.
- vin-sm1-supply: The input supply for the SM1.
- vin-sm1-supply: The input supply for the SM1.
- vin-sm2-supply: The input supply for the SM2.
- vin-sm2-supply: The input supply for the SM2.
...
@@ -20,6 +21,9 @@ Required properties:
...
@@ -20,6 +21,9 @@ Required properties:
Each regulator is defined using the standard binding for regulators.
Each regulator is defined using the standard binding for regulators.
Note: LDO5 and LDO_RTC is supplied by SYS regulator internally and driver
take care of making proper parent child relationship.
Example:
Example:
pmu: tps6586x@34 {
pmu: tps6586x@34 {
...
@@ -30,6 +34,7 @@ Example:
...
@@ -30,6 +34,7 @@ Example:
#gpio-cells = <2>;
#gpio-cells = <2>;
gpio-controller;
gpio-controller;
sys-supply = <&some_reg>;
vin-sm0-supply = <&some_reg>;
vin-sm0-supply = <&some_reg>;
vin-sm1-supply = <&some_reg>;
vin-sm1-supply = <&some_reg>;
vin-sm2-supply = <&some_reg>;
vin-sm2-supply = <&some_reg>;
...
@@ -43,8 +48,16 @@ Example:
...
@@ -43,8 +48,16 @@ Example:
#address-cells = <1>;
#address-cells = <1>;
#size-cells = <0>;
#size-cells = <0>;
s
m0
_reg: regulator@0 {
s
ys
_reg: regulator@0 {
reg = <0>;
reg = <0>;
regulator-compatible = "sys";
regulator-name = "vdd_sys";
regulator-boot-on;
regulator-always-on;
};
sm0_reg: regulator@1 {
reg = <1>;
regulator-compatible = "sm0";
regulator-compatible = "sm0";
regulator-min-microvolt = < 725000>;
regulator-min-microvolt = < 725000>;
regulator-max-microvolt = <1500000>;
regulator-max-microvolt = <1500000>;
...
@@ -52,8 +65,8 @@ Example:
...
@@ -52,8 +65,8 @@ Example:
regulator-always-on;
regulator-always-on;
};
};
sm1_reg: regulator@
1
{
sm1_reg: regulator@
2
{
reg = <
1
>;
reg = <
2
>;
regulator-compatible = "sm1";
regulator-compatible = "sm1";
regulator-min-microvolt = < 725000>;
regulator-min-microvolt = < 725000>;
regulator-max-microvolt = <1500000>;
regulator-max-microvolt = <1500000>;
...
@@ -61,8 +74,8 @@ Example:
...
@@ -61,8 +74,8 @@ Example:
regulator-always-on;
regulator-always-on;
};
};
sm2_reg: regulator@
2
{
sm2_reg: regulator@
3
{
reg = <
2
>;
reg = <
3
>;
regulator-compatible = "sm2";
regulator-compatible = "sm2";
regulator-min-microvolt = <3000000>;
regulator-min-microvolt = <3000000>;
regulator-max-microvolt = <4550000>;
regulator-max-microvolt = <4550000>;
...
@@ -70,72 +83,72 @@ Example:
...
@@ -70,72 +83,72 @@ Example:
regulator-always-on;
regulator-always-on;
};
};
ldo0_reg: regulator@
3
{
ldo0_reg: regulator@
4
{
reg = <
3
>;
reg = <
4
>;
regulator-compatible = "ldo0";
regulator-compatible = "ldo0";
regulator-name = "PCIE CLK";
regulator-name = "PCIE CLK";
regulator-min-microvolt = <3300000>;
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
};
};
ldo1_reg: regulator@
4
{
ldo1_reg: regulator@
5
{
reg = <
4
>;
reg = <
5
>;
regulator-compatible = "ldo1";
regulator-compatible = "ldo1";
regulator-min-microvolt = < 725000>;
regulator-min-microvolt = < 725000>;
regulator-max-microvolt = <1500000>;
regulator-max-microvolt = <1500000>;
};
};
ldo2_reg: regulator@
5
{
ldo2_reg: regulator@
6
{
reg = <
5
>;
reg = <
6
>;
regulator-compatible = "ldo2";
regulator-compatible = "ldo2";
regulator-min-microvolt = < 725000>;
regulator-min-microvolt = < 725000>;
regulator-max-microvolt = <1500000>;
regulator-max-microvolt = <1500000>;
};
};
ldo3_reg: regulator@
6
{
ldo3_reg: regulator@
7
{
reg = <
6
>;
reg = <
7
>;
regulator-compatible = "ldo3";
regulator-compatible = "ldo3";
regulator-min-microvolt = <1250000>;
regulator-min-microvolt = <1250000>;
regulator-max-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
};
};
ldo4_reg: regulator@
7
{
ldo4_reg: regulator@
8
{
reg = <
7
>;
reg = <
8
>;
regulator-compatible = "ldo4";
regulator-compatible = "ldo4";
regulator-min-microvolt = <1700000>;
regulator-min-microvolt = <1700000>;
regulator-max-microvolt = <2475000>;
regulator-max-microvolt = <2475000>;
};
};
ldo5_reg: regulator@
8
{
ldo5_reg: regulator@
9
{
reg = <
8
>;
reg = <
9
>;
regulator-compatible = "ldo5";
regulator-compatible = "ldo5";
regulator-min-microvolt = <1250000>;
regulator-min-microvolt = <1250000>;
regulator-max-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
};
};
ldo6_reg: regulator@
9
{
ldo6_reg: regulator@
10
{
reg = <
9
>;
reg = <
10
>;
regulator-compatible = "ldo6";
regulator-compatible = "ldo6";
regulator-min-microvolt = <1250000>;
regulator-min-microvolt = <1250000>;
regulator-max-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
};
};
ldo7_reg: regulator@1
0
{
ldo7_reg: regulator@1
1
{
reg = <1
0
>;
reg = <1
1
>;
regulator-compatible = "ldo7";
regulator-compatible = "ldo7";
regulator-min-microvolt = <1250000>;
regulator-min-microvolt = <1250000>;
regulator-max-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
};
};
ldo8_reg: regulator@1
1
{
ldo8_reg: regulator@1
2
{
reg = <1
1
>;
reg = <1
2
>;
regulator-compatible = "ldo8";
regulator-compatible = "ldo8";
regulator-min-microvolt = <1250000>;
regulator-min-microvolt = <1250000>;
regulator-max-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
};
};
ldo9_reg: regulator@1
2
{
ldo9_reg: regulator@1
3
{
reg = <1
2
>;
reg = <1
3
>;
regulator-compatible = "ldo9";
regulator-compatible = "ldo9";
regulator-min-microvolt = <1250000>;
regulator-min-microvolt = <1250000>;
regulator-max-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
...
...
arch/arm/boot/dts/tegra20-harmony.dts
View file @
1f10478c
...
@@ -275,6 +275,160 @@ i2c@7000c500 {
...
@@ -275,6 +275,160 @@ i2c@7000c500 {
i2c
@
7000
d000
{
i2c
@
7000
d000
{
status
=
"okay"
;
status
=
"okay"
;
clock
-
frequency
=
<
400000
>;
clock
-
frequency
=
<
400000
>;
pmic
:
tps6586x
@
34
{
compatible
=
"ti,tps6586x"
;
reg
=
<
0x34
>;
interrupts
=
<
0
86
0x4
>;
ti
,
system
-
power
-
controller
;
#
gpio
-
cells
=
<
2
>;
gpio
-
controller
;
sys
-
supply
=
<&
vdd_5v0_reg
>;
vin
-
sm0
-
supply
=
<&
sys_reg
>;
vin
-
sm1
-
supply
=
<&
sys_reg
>;
vin
-
sm2
-
supply
=
<&
sys_reg
>;
vinldo01
-
supply
=
<&
sm2_reg
>;
vinldo23
-
supply
=
<&
sm2_reg
>;
vinldo4
-
supply
=
<&
sm2_reg
>;
vinldo678
-
supply
=
<&
sm2_reg
>;
vinldo9
-
supply
=
<&
sm2_reg
>;
regulators
{
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
0
>;
sys_reg
:
regulator
@
0
{
reg
=
<
0
>;
regulator
-
compatible
=
"sys"
;
regulator
-
name
=
"vdd_sys"
;
regulator
-
always
-
on
;
};
regulator
@
1
{
reg
=
<
1
>;
regulator
-
compatible
=
"sm0"
;
regulator
-
name
=
"vdd_sm0,vdd_core"
;
regulator
-
min
-
microvolt
=
<
1200000
>;
regulator
-
max
-
microvolt
=
<
1200000
>;
regulator
-
always
-
on
;
};
regulator
@
2
{
reg
=
<
2
>;
regulator
-
compatible
=
"sm1"
;
regulator
-
name
=
"vdd_sm1,vdd_cpu"
;
regulator
-
min
-
microvolt
=
<
1000000
>;
regulator
-
max
-
microvolt
=
<
1000000
>;
regulator
-
always
-
on
;
};
sm2_reg
:
regulator
@
3
{
reg
=
<
3
>;
regulator
-
compatible
=
"sm2"
;
regulator
-
name
=
"vdd_sm2,vin_ldo*"
;
regulator
-
min
-
microvolt
=
<
3700000
>;
regulator
-
max
-
microvolt
=
<
3700000
>;
regulator
-
always
-
on
;
};
regulator
@
4
{
reg
=
<
4
>;
regulator
-
compatible
=
"ldo0"
;
regulator
-
name
=
"vdd_ldo0,vddio_pex_clk"
;
regulator
-
min
-
microvolt
=
<
3300000
>;
regulator
-
max
-
microvolt
=
<
3300000
>;
};
regulator
@
5
{
reg
=
<
5
>;
regulator
-
compatible
=
"ldo1"
;
regulator
-
name
=
"vdd_ldo1,avdd_pll*"
;
regulator
-
min
-
microvolt
=
<
1100000
>;
regulator
-
max
-
microvolt
=
<
1100000
>;
regulator
-
always
-
on
;
};
regulator
@
6
{
reg
=
<
6
>;
regulator
-
compatible
=
"ldo2"
;
regulator
-
name
=
"vdd_ldo2,vdd_rtc"
;
regulator
-
min
-
microvolt
=
<
1200000
>;
regulator
-
max
-
microvolt
=
<
1200000
>;
};
regulator
@
7
{
reg
=
<
7
>;
regulator
-
compatible
=
"ldo3"
;
regulator
-
name
=
"vdd_ldo3,avdd_usb*"
;
regulator
-
min
-
microvolt
=
<
3300000
>;
regulator
-
max
-
microvolt
=
<
3300000
>;
regulator
-
always
-
on
;
};
regulator
@
8
{
reg
=
<
8
>;
regulator
-
compatible
=
"ldo4"
;
regulator
-
name
=
"vdd_ldo4,avdd_osc,vddio_sys"
;
regulator
-
min
-
microvolt
=
<
1800000
>;
regulator
-
max
-
microvolt
=
<
1800000
>;
regulator
-
always
-
on
;
};
regulator
@
9
{
reg
=
<
9
>;
regulator
-
compatible
=
"ldo5"
;
regulator
-
name
=
"vdd_ldo5,vcore_mmc"
;
regulator
-
min
-
microvolt
=
<
2850000
>;
regulator
-
max
-
microvolt
=
<
2850000
>;
regulator
-
always
-
on
;
};
regulator
@
10
{
reg
=
<
10
>;
regulator
-
compatible
=
"ldo6"
;
regulator
-
name
=
"vdd_ldo6,avdd_vdac"
;
regulator
-
min
-
microvolt
=
<
1800000
>;
regulator
-
max
-
microvolt
=
<
1800000
>;
};
regulator
@
11
{
reg
=
<
11
>;
regulator
-
compatible
=
"ldo7"
;
regulator
-
name
=
"vdd_ldo7,avdd_hdmi,vdd_fuse"
;
regulator
-
min
-
microvolt
=
<
3300000
>;
regulator
-
max
-
microvolt
=
<
3300000
>;
};
regulator
@
12
{
reg
=
<
12
>;
regulator
-
compatible
=
"ldo8"
;
regulator
-
name
=
"vdd_ldo8,avdd_hdmi_pll"
;
regulator
-
min
-
microvolt
=
<
1800000
>;
regulator
-
max
-
microvolt
=
<
1800000
>;
};
regulator
@
13
{
reg
=
<
13
>;
regulator
-
compatible
=
"ldo9"
;
regulator
-
name
=
"vdd_ldo9,avdd_2v85,vdd_ddr_rx"
;
regulator
-
min
-
microvolt
=
<
2850000
>;
regulator
-
max
-
microvolt
=
<
2850000
>;
regulator
-
always
-
on
;
};
regulator
@
14
{
reg
=
<
14
>;
regulator
-
compatible
=
"ldo_rtc"
;
regulator
-
name
=
"vdd_rtc_out,vdd_cell"
;
regulator
-
min
-
microvolt
=
<
3300000
>;
regulator
-
max
-
microvolt
=
<
3300000
>;
regulator
-
always
-
on
;
};
};
};
};
};
pmc
{
pmc
{
...
@@ -310,6 +464,72 @@ sdhci@c8000600 {
...
@@ -310,6 +464,72 @@ sdhci@c8000600 {
bus
-
width
=
<
8
>;
bus
-
width
=
<
8
>;
};
};
regulators
{
compatible
=
"simple-bus"
;
#
address
-
cells
=
<
1
>;
#
size
-
cells
=
<
0
>;
vdd_5v0_reg
:
regulator
@
0
{
compatible
=
"regulator-fixed"
;
reg
=
<
0
>;
regulator
-
name
=
"vdd_5v0"
;
regulator
-
min
-
microvolt
=
<
5000000
>;
regulator
-
max
-
microvolt
=
<
5000000
>;
regulator
-
always
-
on
;
};
regulator
@
1
{
compatible
=
"regulator-fixed"
;
reg
=
<
1
>;
regulator
-
name
=
"vdd_1v5"
;
regulator
-
min
-
microvolt
=
<
1500000
>;
regulator
-
max
-
microvolt
=
<
1500000
>;
gpio
=
<&
pmic
0
0
>;
};
regulator
@
2
{
compatible
=
"regulator-fixed"
;
reg
=
<
2
>;
regulator
-
name
=
"vdd_1v2"
;
regulator
-
min
-
microvolt
=
<
1200000
>;
regulator
-
max
-
microvolt
=
<
1200000
>;
gpio
=
<&
pmic
1
0
>;
enable
-
active
-
high
;
};
regulator
@
3
{
compatible
=
"regulator-fixed"
;
reg
=
<
3
>;
regulator
-
name
=
"vdd_1v05"
;
regulator
-
min
-
microvolt
=
<
1050000
>;
regulator
-
max
-
microvolt
=
<
1050000
>;
gpio
=
<&
pmic
2
0
>;
enable
-
active
-
high
;
/*
Hack
until
board
-
harmony
-
pcie
.
c
is
removed
*/
status
=
"disabled"
;
};
regulator
@
4
{
compatible
=
"regulator-fixed"
;
reg
=
<
4
>;
regulator
-
name
=
"vdd_pnl"
;
regulator
-
min
-
microvolt
=
<
2800000
>;
regulator
-
max
-
microvolt
=
<
2800000
>;
gpio
=
<&
gpio
22
0
>;
/*
gpio
PC6
*/
enable
-
active
-
high
;
};
regulator
@
5
{
compatible
=
"regulator-fixed"
;
reg
=
<
5
>;
regulator
-
name
=
"vdd_bl"
;
regulator
-
min
-
microvolt
=
<
2800000
>;
regulator
-
max
-
microvolt
=
<
2800000
>;
gpio
=
<&
gpio
176
0
>;
/*
gpio
PW0
*/
enable
-
active
-
high
;
};
};
sound
{
sound
{
compatible
=
"nvidia,tegra-audio-wm8903-harmony"
,
compatible
=
"nvidia,tegra-audio-wm8903-harmony"
,
"nvidia,tegra-audio-wm8903"
;
"nvidia,tegra-audio-wm8903"
;
...
...
arch/arm/mach-tegra/Kconfig
View file @
1f10478c
...
@@ -59,25 +59,6 @@ config TEGRA_AHB
...
@@ -59,25 +59,6 @@ config TEGRA_AHB
comment "Tegra board type"
comment "Tegra board type"
config MACH_HARMONY
bool "Harmony board"
depends on ARCH_TEGRA_2x_SOC
help
Support for nVidia Harmony development platform
config MACH_PAZ00
bool "Paz00 board"
depends on ARCH_TEGRA_2x_SOC
help
Support for the Toshiba AC100/Dynabook AZ netbook
config MACH_TRIMSLICE
bool "TrimSlice board"
depends on ARCH_TEGRA_2x_SOC
select TEGRA_PCI
help
Support for CompuLab TrimSlice platform
choice
choice
prompt "Default low-level debug console UART"
prompt "Default low-level debug console UART"
default TEGRA_DEBUG_UART_NONE
default TEGRA_DEBUG_UART_NONE
...
...
arch/arm/mach-tegra/Makefile
View file @
1f10478c
...
@@ -26,13 +26,6 @@ obj-$(CONFIG_USB_SUPPORT) += usb_phy.o
...
@@ -26,13 +26,6 @@ obj-$(CONFIG_USB_SUPPORT) += usb_phy.o
obj-$(CONFIG_ARCH_TEGRA_2x_SOC)
+=
board-dt-tegra20.o
obj-$(CONFIG_ARCH_TEGRA_2x_SOC)
+=
board-dt-tegra20.o
obj-$(CONFIG_ARCH_TEGRA_3x_SOC)
+=
board-dt-tegra30.o
obj-$(CONFIG_ARCH_TEGRA_3x_SOC)
+=
board-dt-tegra30.o
obj-$(CONFIG_MACH_HARMONY)
+=
board-harmony.o
obj-$(CONFIG_ARCH_TEGRA_2x_SOC)
+=
board-harmony-pcie.o
obj-$(CONFIG_MACH_HARMONY)
+=
board-harmony-pinmux.o
obj-$(CONFIG_MACH_HARMONY)
+=
board-harmony-pcie.o
obj-$(CONFIG_MACH_HARMONY)
+=
board-harmony-power.o
obj-$(CONFIG_MACH_PAZ00)
+=
board-paz00.o
obj-$(CONFIG_ARCH_TEGRA_2x_SOC)
+=
board-paz00.o
obj-$(CONFIG_MACH_PAZ00)
+=
board-paz00-pinmux.o
obj-$(CONFIG_MACH_TRIMSLICE)
+=
board-trimslice.o
obj-$(CONFIG_MACH_TRIMSLICE)
+=
board-trimslice-pinmux.o
arch/arm/mach-tegra/board-dt-tegra20.c
View file @
1f10478c
...
@@ -42,7 +42,6 @@
...
@@ -42,7 +42,6 @@
#include <mach/irqs.h>
#include <mach/irqs.h>
#include "board.h"
#include "board.h"
#include "board-harmony.h"
#include "clock.h"
#include "clock.h"
#include "devices.h"
#include "devices.h"
...
@@ -95,54 +94,40 @@ static void __init tegra_dt_init(void)
...
@@ -95,54 +94,40 @@ static void __init tegra_dt_init(void)
tegra20_auxdata_lookup
,
NULL
);
tegra20_auxdata_lookup
,
NULL
);
}
}
#ifdef CONFIG_MACH_TRIMSLICE
static
void
__init
trimslice_init
(
void
)
static
void
__init
trimslice_init
(
void
)
{
{
#ifdef CONFIG_TEGRA_PCI
int
ret
;
int
ret
;
ret
=
tegra_pcie_init
(
true
,
true
);
ret
=
tegra_pcie_init
(
true
,
true
);
if
(
ret
)
if
(
ret
)
pr_err
(
"tegra_pci_init() failed: %d
\n
"
,
ret
);
pr_err
(
"tegra_pci_init() failed: %d
\n
"
,
ret
);
}
#endif
#endif
}
#ifdef CONFIG_MACH_HARMONY
static
void
__init
harmony_init
(
void
)
static
void
__init
harmony_init
(
void
)
{
{
#ifdef CONFIG_TEGRA_PCI
int
ret
;
int
ret
;
ret
=
harmony_regulator_init
();
if
(
ret
)
{
pr_err
(
"harmony_regulator_init() failed: %d
\n
"
,
ret
);
return
;
}
ret
=
harmony_pcie_init
();
ret
=
harmony_pcie_init
();
if
(
ret
)
if
(
ret
)
pr_err
(
"harmony_pcie_init() failed: %d
\n
"
,
ret
);
pr_err
(
"harmony_pcie_init() failed: %d
\n
"
,
ret
);
}
#endif
#endif
}
#ifdef CONFIG_MACH_PAZ00
static
void
__init
paz00_init
(
void
)
static
void
__init
paz00_init
(
void
)
{
{
tegra_paz00_wifikill_init
();
tegra_paz00_wifikill_init
();
}
}
#endif
static
struct
{
static
struct
{
char
*
machine
;
char
*
machine
;
void
(
*
init
)(
void
);
void
(
*
init
)(
void
);
}
board_init_funcs
[]
=
{
}
board_init_funcs
[]
=
{
#ifdef CONFIG_MACH_TRIMSLICE
{
"compulab,trimslice"
,
trimslice_init
},
{
"compulab,trimslice"
,
trimslice_init
},
#endif
#ifdef CONFIG_MACH_HARMONY
{
"nvidia,harmony"
,
harmony_init
},
{
"nvidia,harmony"
,
harmony_init
},
#endif
#ifdef CONFIG_MACH_PAZ00
{
"compal,paz00"
,
paz00_init
},
{
"compal,paz00"
,
paz00_init
},
#endif
};
};
static
void
__init
tegra_dt_init_late
(
void
)
static
void
__init
tegra_dt_init_late
(
void
)
...
...
arch/arm/mach-tegra/board-harmony-pcie.c
View file @
1f10478c
...
@@ -18,35 +18,57 @@
...
@@ -18,35 +18,57 @@
#include <linux/kernel.h>
#include <linux/kernel.h>
#include <linux/gpio.h>
#include <linux/gpio.h>
#include <linux/err.h>
#include <linux/err.h>
#include <linux/of_gpio.h>
#include <linux/regulator/consumer.h>
#include <linux/regulator/consumer.h>
#include <asm/mach-types.h>
#include <asm/mach-types.h>
#include "board.h"
#include "board.h"
#include "board-harmony.h"
#ifdef CONFIG_TEGRA_PCI
#ifdef CONFIG_TEGRA_PCI
int
__init
harmony_pcie_init
(
void
)
int
__init
harmony_pcie_init
(
void
)
{
{
struct
device_node
*
np
;
int
en_vdd_1v05
;
struct
regulator
*
regulator
=
NULL
;
struct
regulator
*
regulator
=
NULL
;
int
err
;
int
err
;
err
=
gpio_request
(
TEGRA_GPIO_EN_VDD_1V05_GPIO
,
"EN_VDD_1V05"
);
np
=
of_find_node_by_path
(
"/regulators/regulator@3"
);
if
(
err
)
if
(
!
np
)
{
pr_err
(
"%s: of_find_node_by_path failed
\n
"
,
__func__
);
return
-
ENODEV
;
}
en_vdd_1v05
=
of_get_named_gpio
(
np
,
"gpio"
,
0
);
if
(
en_vdd_1v05
<
0
)
{
pr_err
(
"%s: of_get_named_gpio failed: %d
\n
"
,
__func__
,
en_vdd_1v05
);
return
en_vdd_1v05
;
}
err
=
gpio_request
(
en_vdd_1v05
,
"EN_VDD_1V05"
);
if
(
err
)
{
pr_err
(
"%s: gpio_request failed: %d
\n
"
,
__func__
,
err
);
return
err
;
return
err
;
}
gpio_direction_output
(
TEGRA_GPIO_EN_VDD_1V05_GPIO
,
1
);
gpio_direction_output
(
en_vdd_1v05
,
1
);
regulator
=
regulator_get
(
NULL
,
"pex_clk"
);
regulator
=
regulator_get
(
NULL
,
"vdd_ldo0,vddio_pex_clk"
);
if
(
IS_ERR_OR_NULL
(
regulator
))
if
(
IS_ERR_OR_NULL
(
regulator
))
{
pr_err
(
"%s: regulator_get failed: %d
\n
"
,
__func__
,
(
int
)
PTR_ERR
(
regulator
));
goto
err_reg
;
goto
err_reg
;
}
regulator_enable
(
regulator
);
regulator_enable
(
regulator
);
err
=
tegra_pcie_init
(
true
,
true
);
err
=
tegra_pcie_init
(
true
,
true
);
if
(
err
)
if
(
err
)
{
pr_err
(
"%s: tegra_pcie_init failed: %d
\n
"
,
__func__
,
err
);
goto
err_pcie
;
goto
err_pcie
;
}
return
0
;
return
0
;
...
@@ -54,20 +76,9 @@ int __init harmony_pcie_init(void)
...
@@ -54,20 +76,9 @@ int __init harmony_pcie_init(void)
regulator_disable
(
regulator
);
regulator_disable
(
regulator
);
regulator_put
(
regulator
);
regulator_put
(
regulator
);
err_reg:
err_reg:
gpio_free
(
TEGRA_GPIO_EN_VDD_1V05_GPIO
);
gpio_free
(
en_vdd_1v05
);
return
err
;
return
err
;
}
}
static
int
__init
harmony_pcie_initcall
(
void
)
{
if
(
!
machine_is_harmony
())
return
0
;
return
harmony_pcie_init
();
}
/* PCI should be initialized after I2C, mfd and regulators */
subsys_initcall_sync
(
harmony_pcie_initcall
);
#endif
#endif
arch/arm/mach-tegra/board-harmony-pinmux.c
deleted
100644 → 0
View file @
a5b64ce6
/*
* arch/arm/mach-tegra/board-harmony-pinmux.c
*
* Copyright (C) 2010 Google, Inc.
* Copyright (c) 2012, NVIDIA CORPORATION. All rights reserved.
*
* This software is licensed under the terms of the GNU General Public
* License version 2, as published by the Free Software Foundation, and
* may be copied, distributed, and modified under those terms.
*
* 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/kernel.h>
#include "board-harmony.h"
#include "board-pinmux.h"
static
struct
pinctrl_map
harmony_map
[]
=
{
TEGRA_MAP_MUXCONF
(
"ata"
,
"ide"
,
none
,
driven
),
TEGRA_MAP_MUXCONF
(
"atb"
,
"sdio4"
,
none
,
driven
),
TEGRA_MAP_MUXCONF
(
"atc"
,
"nand"
,
none
,
driven
),
TEGRA_MAP_MUXCONF
(
"atd"
,
"gmi"
,
none
,
driven
),
TEGRA_MAP_MUXCONF
(
"ate"
,
"gmi"
,
none
,
driven
),
TEGRA_MAP_MUXCONF
(
"cdev1"
,
"plla_out"
,
none
,
driven
),
TEGRA_MAP_MUXCONF
(
"cdev2"
,
"pllp_out4"
,
down
,
tristate
),
TEGRA_MAP_MUXCONF
(
"crtp"
,
"crt"
,
none
,
tristate
),
TEGRA_MAP_MUXCONF
(
"csus"
,
"vi_sensor_clk"
,
down
,
tristate
),
TEGRA_MAP_MUXCONF
(
"dap1"
,
"dap1"
,
none
,
driven
),
TEGRA_MAP_MUXCONF
(
"dap2"
,
"dap2"
,
none
,
tristate
),
TEGRA_MAP_MUXCONF
(
"dap3"
,
"dap3"
,
none
,
tristate
),
TEGRA_MAP_MUXCONF
(
"dap4"
,
"dap4"
,
none
,
tristate
),
TEGRA_MAP_MUXCONF
(
"ddc"
,
"i2c2"
,
up
,
driven
),
TEGRA_MAP_MUXCONF
(
"dta"
,
"sdio2"
,
up
,
driven
),
TEGRA_MAP_MUXCONF
(
"dtb"
,
"rsvd1"
,
none
,
driven
),
TEGRA_MAP_MUXCONF
(
"dtc"
,
"rsvd1"
,
none
,
tristate
),
TEGRA_MAP_MUXCONF
(
"dtd"
,
"sdio2"
,
up
,
driven
),
TEGRA_MAP_MUXCONF
(
"dte"
,
"rsvd1"
,
none
,
tristate
),
TEGRA_MAP_MUXCONF
(
"dtf"
,
"i2c3"
,
none
,
tristate
),
TEGRA_MAP_MUXCONF
(
"gma"
,
"sdio4"
,
none
,
driven
),
TEGRA_MAP_MUXCONF
(
"gmb"
,
"gmi"
,
none
,
driven
),
TEGRA_MAP_MUXCONF
(
"gmc"
,
"uartd"
,
none
,
driven
),
TEGRA_MAP_MUXCONF
(
"gmd"
,
"gmi"
,
none
,
driven
),
TEGRA_MAP_MUXCONF
(
"gme"
,
"sdio4"
,
none
,
driven
),
TEGRA_MAP_MUXCONF
(
"gpu"
,
"gmi"
,
none
,
tristate
),
TEGRA_MAP_MUXCONF
(
"gpu7"
,
"rtck"
,
none
,
driven
),
TEGRA_MAP_MUXCONF
(
"gpv"
,
"pcie"
,
none
,
driven
),
TEGRA_MAP_MUXCONF
(
"hdint"
,
"hdmi"
,
na
,
tristate
),
TEGRA_MAP_MUXCONF
(
"i2cp"
,
"i2cp"
,
none
,
driven
),
TEGRA_MAP_MUXCONF
(
"irrx"
,
"uarta"
,
up
,
tristate
),
TEGRA_MAP_MUXCONF
(
"irtx"
,
"uarta"
,
up
,
tristate
),
TEGRA_MAP_MUXCONF
(
"kbca"
,
"kbc"
,
up
,
driven
),
TEGRA_MAP_MUXCONF
(
"kbcb"
,
"kbc"
,
up
,
driven
),
TEGRA_MAP_MUXCONF
(
"kbcc"
,
"kbc"
,
up
,
driven
),
TEGRA_MAP_MUXCONF
(
"kbcd"
,
"kbc"
,
up
,
driven
),
TEGRA_MAP_MUXCONF
(
"kbce"
,
"kbc"
,
up
,
driven
),
TEGRA_MAP_MUXCONF
(
"kbcf"
,
"kbc"
,
up
,
driven
),
TEGRA_MAP_MUXCONF
(
"lcsn"
,
"displaya"
,
na
,
tristate
),
TEGRA_MAP_MUXCONF
(
"ld0"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"ld1"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"ld10"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"ld11"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"ld12"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"ld13"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"ld14"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"ld15"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"ld16"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"ld17"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"ld2"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"ld3"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"ld4"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"ld5"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"ld6"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"ld7"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"ld8"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"ld9"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"ldc"
,
"displaya"
,
na
,
tristate
),
TEGRA_MAP_MUXCONF
(
"ldi"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"lhp0"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"lhp1"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"lhp2"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"lhs"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"lm0"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"lm1"
,
"displaya"
,
na
,
tristate
),
TEGRA_MAP_MUXCONF
(
"lpp"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"lpw0"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"lpw1"
,
"displaya"
,
na
,
tristate
),
TEGRA_MAP_MUXCONF
(
"lpw2"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"lsc0"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"lsc1"
,
"displaya"
,
na
,
tristate
),
TEGRA_MAP_MUXCONF
(
"lsck"
,
"displaya"
,
na
,
tristate
),
TEGRA_MAP_MUXCONF
(
"lsda"
,
"displaya"
,
na
,
tristate
),
TEGRA_MAP_MUXCONF
(
"lsdi"
,
"displaya"
,
na
,
tristate
),
TEGRA_MAP_MUXCONF
(
"lspi"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"lvp0"
,
"displaya"
,
na
,
tristate
),
TEGRA_MAP_MUXCONF
(
"lvp1"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"lvs"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"owc"
,
"rsvd2"
,
na
,
tristate
),
TEGRA_MAP_MUXCONF
(
"pmc"
,
"pwr_on"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"pta"
,
"hdmi"
,
none
,
driven
),
TEGRA_MAP_MUXCONF
(
"rm"
,
"i2c1"
,
none
,
driven
),
TEGRA_MAP_MUXCONF
(
"sdb"
,
"pwm"
,
na
,
tristate
),
TEGRA_MAP_MUXCONF
(
"sdc"
,
"pwm"
,
up
,
driven
),
TEGRA_MAP_MUXCONF
(
"sdd"
,
"pwm"
,
up
,
tristate
),
TEGRA_MAP_MUXCONF
(
"sdio1"
,
"sdio1"
,
none
,
tristate
),
TEGRA_MAP_MUXCONF
(
"slxa"
,
"pcie"
,
none
,
driven
),
TEGRA_MAP_MUXCONF
(
"slxc"
,
"spdif"
,
none
,
tristate
),
TEGRA_MAP_MUXCONF
(
"slxd"
,
"spdif"
,
none
,
tristate
),
TEGRA_MAP_MUXCONF
(
"slxk"
,
"pcie"
,
none
,
driven
),
TEGRA_MAP_MUXCONF
(
"spdi"
,
"rsvd2"
,
none
,
tristate
),
TEGRA_MAP_MUXCONF
(
"spdo"
,
"rsvd2"
,
none
,
tristate
),
TEGRA_MAP_MUXCONF
(
"spia"
,
"gmi"
,
none
,
driven
),
TEGRA_MAP_MUXCONF
(
"spib"
,
"gmi"
,
none
,
driven
),
TEGRA_MAP_MUXCONF
(
"spic"
,
"gmi"
,
up
,
tristate
),
TEGRA_MAP_MUXCONF
(
"spid"
,
"spi1"
,
down
,
tristate
),
TEGRA_MAP_MUXCONF
(
"spie"
,
"spi1"
,
up
,
tristate
),
TEGRA_MAP_MUXCONF
(
"spif"
,
"spi1"
,
down
,
tristate
),
TEGRA_MAP_MUXCONF
(
"spig"
,
"spi2_alt"
,
none
,
tristate
),
TEGRA_MAP_MUXCONF
(
"spih"
,
"spi2_alt"
,
up
,
tristate
),
TEGRA_MAP_MUXCONF
(
"uaa"
,
"ulpi"
,
up
,
tristate
),
TEGRA_MAP_MUXCONF
(
"uab"
,
"ulpi"
,
up
,
tristate
),
TEGRA_MAP_MUXCONF
(
"uac"
,
"rsvd2"
,
none
,
tristate
),
TEGRA_MAP_MUXCONF
(
"uad"
,
"irda"
,
up
,
tristate
),
TEGRA_MAP_MUXCONF
(
"uca"
,
"uartc"
,
up
,
tristate
),
TEGRA_MAP_MUXCONF
(
"ucb"
,
"uartc"
,
up
,
tristate
),
TEGRA_MAP_MUXCONF
(
"uda"
,
"ulpi"
,
none
,
tristate
),
TEGRA_MAP_CONF
(
"ck32"
,
none
,
na
),
TEGRA_MAP_CONF
(
"ddrc"
,
none
,
na
),
TEGRA_MAP_CONF
(
"pmca"
,
none
,
na
),
TEGRA_MAP_CONF
(
"pmcb"
,
none
,
na
),
TEGRA_MAP_CONF
(
"pmcc"
,
none
,
na
),
TEGRA_MAP_CONF
(
"pmcd"
,
none
,
na
),
TEGRA_MAP_CONF
(
"pmce"
,
none
,
na
),
TEGRA_MAP_CONF
(
"xm2c"
,
none
,
na
),
TEGRA_MAP_CONF
(
"xm2d"
,
none
,
na
),
TEGRA_MAP_CONF
(
"ls"
,
up
,
na
),
TEGRA_MAP_CONF
(
"lc"
,
up
,
na
),
TEGRA_MAP_CONF
(
"ld17_0"
,
down
,
na
),
TEGRA_MAP_CONF
(
"ld19_18"
,
down
,
na
),
TEGRA_MAP_CONF
(
"ld21_20"
,
down
,
na
),
TEGRA_MAP_CONF
(
"ld23_22"
,
down
,
na
),
};
static
struct
tegra_board_pinmux_conf
conf
=
{
.
maps
=
harmony_map
,
.
map_count
=
ARRAY_SIZE
(
harmony_map
),
};
void
harmony_pinmux_init
(
void
)
{
tegra_board_pinmux_init
(
&
conf
,
NULL
);
}
arch/arm/mach-tegra/board-harmony-power.c
deleted
100644 → 0
View file @
a5b64ce6
/*
* Copyright (C) 2010 NVIDIA, Inc.
*
* 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
* published by the Free Software Foundation.
*
* 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.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
* 02111-1307, USA
*/
#include <linux/i2c.h>
#include <linux/platform_device.h>
#include <linux/gpio.h>
#include <linux/regulator/machine.h>
#include <linux/regulator/fixed.h>
#include <linux/mfd/tps6586x.h>
#include <linux/of.h>
#include <linux/of_i2c.h>
#include <asm/mach-types.h>
#include <mach/irqs.h>
#include "board-harmony.h"
static
struct
regulator_consumer_supply
tps658621_ldo0_supply
[]
=
{
REGULATOR_SUPPLY
(
"pex_clk"
,
NULL
),
};
static
struct
regulator_init_data
ldo0_data
=
{
.
supply_regulator
=
"vdd_sm2"
,
.
constraints
=
{
.
name
=
"vdd_ldo0"
,
.
min_uV
=
3300
*
1000
,
.
max_uV
=
3300
*
1000
,
.
valid_modes_mask
=
(
REGULATOR_MODE_NORMAL
|
REGULATOR_MODE_STANDBY
),
.
valid_ops_mask
=
(
REGULATOR_CHANGE_MODE
|
REGULATOR_CHANGE_STATUS
|
REGULATOR_CHANGE_VOLTAGE
),
.
apply_uV
=
1
,
},
.
num_consumer_supplies
=
ARRAY_SIZE
(
tps658621_ldo0_supply
),
.
consumer_supplies
=
tps658621_ldo0_supply
,
};
#define HARMONY_REGULATOR_INIT(_id, _name, _supply, _minmv, _maxmv, _on)\
static struct regulator_init_data _id##_data = { \
.supply_regulator = _supply, \
.constraints = { \
.name = _name, \
.min_uV = (_minmv)*1000, \
.max_uV = (_maxmv)*1000, \
.valid_modes_mask = (REGULATOR_MODE_NORMAL | \
REGULATOR_MODE_STANDBY), \
.valid_ops_mask = (REGULATOR_CHANGE_MODE | \
REGULATOR_CHANGE_STATUS | \
REGULATOR_CHANGE_VOLTAGE), \
.always_on = _on, \
}, \
}
HARMONY_REGULATOR_INIT
(
sm0
,
"vdd_sm0"
,
"vdd_sys"
,
725
,
1500
,
1
);
HARMONY_REGULATOR_INIT
(
sm1
,
"vdd_sm1"
,
"vdd_sys"
,
725
,
1500
,
1
);
HARMONY_REGULATOR_INIT
(
sm2
,
"vdd_sm2"
,
"vdd_sys"
,
3000
,
4550
,
1
);
HARMONY_REGULATOR_INIT
(
ldo1
,
"vdd_ldo1"
,
"vdd_sm2"
,
725
,
1500
,
1
);
HARMONY_REGULATOR_INIT
(
ldo2
,
"vdd_ldo2"
,
"vdd_sm2"
,
725
,
1500
,
0
);
HARMONY_REGULATOR_INIT
(
ldo3
,
"vdd_ldo3"
,
"vdd_sm2"
,
1250
,
3300
,
1
);
HARMONY_REGULATOR_INIT
(
ldo4
,
"vdd_ldo4"
,
"vdd_sm2"
,
1700
,
2475
,
1
);
HARMONY_REGULATOR_INIT
(
ldo5
,
"vdd_ldo5"
,
NULL
,
1250
,
3300
,
1
);
HARMONY_REGULATOR_INIT
(
ldo6
,
"vdd_ldo6"
,
"vdd_sm2"
,
1250
,
3300
,
0
);
HARMONY_REGULATOR_INIT
(
ldo7
,
"vdd_ldo7"
,
"vdd_sm2"
,
1250
,
3300
,
0
);
HARMONY_REGULATOR_INIT
(
ldo8
,
"vdd_ldo8"
,
"vdd_sm2"
,
1250
,
3300
,
0
);
HARMONY_REGULATOR_INIT
(
ldo9
,
"vdd_ldo9"
,
"vdd_sm2"
,
1250
,
3300
,
1
);
#define TPS_REG(_id, _data) \
{ \
.id = TPS6586X_ID_##_id, \
.name = "tps6586x-regulator", \
.platform_data = _data, \
}
static
struct
tps6586x_subdev_info
tps_devs
[]
=
{
TPS_REG
(
SM_0
,
&
sm0_data
),
TPS_REG
(
SM_1
,
&
sm1_data
),
TPS_REG
(
SM_2
,
&
sm2_data
),
TPS_REG
(
LDO_0
,
&
ldo0_data
),
TPS_REG
(
LDO_1
,
&
ldo1_data
),
TPS_REG
(
LDO_2
,
&
ldo2_data
),
TPS_REG
(
LDO_3
,
&
ldo3_data
),
TPS_REG
(
LDO_4
,
&
ldo4_data
),
TPS_REG
(
LDO_5
,
&
ldo5_data
),
TPS_REG
(
LDO_6
,
&
ldo6_data
),
TPS_REG
(
LDO_7
,
&
ldo7_data
),
TPS_REG
(
LDO_8
,
&
ldo8_data
),
TPS_REG
(
LDO_9
,
&
ldo9_data
),
};
static
struct
tps6586x_platform_data
tps_platform
=
{
.
irq_base
=
TEGRA_NR_IRQS
,
.
num_subdevs
=
ARRAY_SIZE
(
tps_devs
),
.
subdevs
=
tps_devs
,
.
gpio_base
=
HARMONY_GPIO_TPS6586X
(
0
),
};
static
struct
i2c_board_info
__initdata
harmony_regulators
[]
=
{
{
I2C_BOARD_INFO
(
"tps6586x"
,
0x34
),
.
irq
=
INT_EXTERNAL_PMU
,
.
platform_data
=
&
tps_platform
,
},
};
int
__init
harmony_regulator_init
(
void
)
{
regulator_register_always_on
(
0
,
"vdd_sys"
,
NULL
,
0
,
5000000
);
if
(
machine_is_harmony
())
{
i2c_register_board_info
(
3
,
harmony_regulators
,
1
);
}
else
{
/* Harmony, booted using device tree */
struct
device_node
*
np
;
struct
i2c_adapter
*
adapter
;
np
=
of_find_node_by_path
(
"/i2c@7000d000"
);
if
(
np
==
NULL
)
{
pr_err
(
"Could not find device_node for DVC I2C
\n
"
);
return
-
ENODEV
;
}
adapter
=
of_find_i2c_adapter_by_node
(
np
);
if
(
!
adapter
)
{
pr_err
(
"Could not find i2c_adapter for DVC I2C
\n
"
);
return
-
ENODEV
;
}
i2c_new_device
(
adapter
,
harmony_regulators
);
}
return
0
;
}
arch/arm/mach-tegra/board-harmony.c
deleted
100644 → 0
View file @
a5b64ce6
/*
* arch/arm/mach-tegra/board-harmony.c
*
* Copyright (C) 2010 Google, Inc.
* Copyright (C) 2011 NVIDIA, Inc.
*
* This software is licensed under the terms of the GNU General Public
* License version 2, as published by the Free Software Foundation, and
* may be copied, distributed, and modified under those terms.
*
* 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/kernel.h>
#include <linux/init.h>
#include <linux/platform_device.h>
#include <linux/serial_8250.h>
#include <linux/of_serial.h>
#include <linux/clk.h>
#include <linux/dma-mapping.h>
#include <linux/pda_power.h>
#include <linux/io.h>
#include <linux/gpio.h>
#include <linux/i2c.h>
#include <sound/wm8903.h>
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
#include <asm/mach/time.h>
#include <asm/hardware/gic.h>
#include <asm/setup.h>
#include <mach/tegra_wm8903_pdata.h>
#include <mach/iomap.h>
#include <mach/irqs.h>
#include <mach/sdhci.h>
#include "board.h"
#include "board-harmony.h"
#include "clock.h"
#include "devices.h"
#include "gpio-names.h"
static
struct
plat_serial8250_port
debug_uart_platform_data
[]
=
{
{
.
membase
=
IO_ADDRESS
(
TEGRA_UARTD_BASE
),
.
mapbase
=
TEGRA_UARTD_BASE
,
.
irq
=
INT_UARTD
,
.
flags
=
UPF_BOOT_AUTOCONF
|
UPF_FIXED_TYPE
,
.
type
=
PORT_TEGRA
,
.
handle_break
=
tegra_serial_handle_break
,
.
iotype
=
UPIO_MEM
,
.
regshift
=
2
,
.
uartclk
=
216000000
,
},
{
.
flags
=
0
}
};
static
struct
platform_device
debug_uart
=
{
.
name
=
"serial8250"
,
.
id
=
PLAT8250_DEV_PLATFORM
,
.
dev
=
{
.
platform_data
=
debug_uart_platform_data
,
},
};
static
struct
tegra_wm8903_platform_data
harmony_audio_pdata
=
{
.
gpio_spkr_en
=
TEGRA_GPIO_SPKR_EN
,
.
gpio_hp_det
=
TEGRA_GPIO_HP_DET
,
.
gpio_hp_mute
=
-
1
,
.
gpio_int_mic_en
=
TEGRA_GPIO_INT_MIC_EN
,
.
gpio_ext_mic_en
=
TEGRA_GPIO_EXT_MIC_EN
,
};
static
struct
platform_device
harmony_audio_device
=
{
.
name
=
"tegra-snd-wm8903"
,
.
id
=
0
,
.
dev
=
{
.
platform_data
=
&
harmony_audio_pdata
,
},
};
static
struct
wm8903_platform_data
harmony_wm8903_pdata
=
{
.
irq_active_low
=
0
,
.
micdet_cfg
=
0
,
.
micdet_delay
=
100
,
.
gpio_base
=
HARMONY_GPIO_WM8903
(
0
),
.
gpio_cfg
=
{
0
,
0
,
WM8903_GPIO_CONFIG_ZERO
,
0
,
0
,
},
};
static
struct
i2c_board_info
__initdata
wm8903_board_info
=
{
I2C_BOARD_INFO
(
"wm8903"
,
0x1a
),
.
platform_data
=
&
harmony_wm8903_pdata
,
};
static
void
__init
harmony_i2c_init
(
void
)
{
platform_device_register
(
&
tegra_i2c_device1
);
platform_device_register
(
&
tegra_i2c_device2
);
platform_device_register
(
&
tegra_i2c_device3
);
platform_device_register
(
&
tegra_i2c_device4
);
wm8903_board_info
.
irq
=
gpio_to_irq
(
TEGRA_GPIO_CDC_IRQ
);
i2c_register_board_info
(
0
,
&
wm8903_board_info
,
1
);
}
static
struct
platform_device
*
harmony_devices
[]
__initdata
=
{
&
debug_uart
,
&
tegra_sdhci_device1
,
&
tegra_sdhci_device2
,
&
tegra_sdhci_device4
,
&
tegra_ehci3_device
,
&
tegra_i2s_device1
,
&
tegra_das_device
,
&
harmony_audio_device
,
};
static
void
__init
tegra_harmony_fixup
(
struct
tag
*
tags
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
mi
->
nr_banks
=
2
;
mi
->
bank
[
0
].
start
=
PHYS_OFFSET
;
mi
->
bank
[
0
].
size
=
448
*
SZ_1M
;
mi
->
bank
[
1
].
start
=
SZ_512M
;
mi
->
bank
[
1
].
size
=
SZ_512M
;
}
static
__initdata
struct
tegra_clk_init_table
harmony_clk_init_table
[]
=
{
/* name parent rate enabled */
{
"uartd"
,
"pll_p"
,
216000000
,
true
},
{
"pll_a"
,
"pll_p_out1"
,
56448000
,
true
},
{
"pll_a_out0"
,
"pll_a"
,
11289600
,
true
},
{
"cdev1"
,
NULL
,
0
,
true
},
{
"i2s1"
,
"pll_a_out0"
,
11289600
,
false
},
{
"usb3"
,
"clk_m"
,
12000000
,
true
},
{
NULL
,
NULL
,
0
,
0
},
};
static
struct
tegra_sdhci_platform_data
sdhci_pdata1
=
{
.
cd_gpio
=
-
1
,
.
wp_gpio
=
-
1
,
.
power_gpio
=
-
1
,
};
static
struct
tegra_sdhci_platform_data
sdhci_pdata2
=
{
.
cd_gpio
=
TEGRA_GPIO_SD2_CD
,
.
wp_gpio
=
TEGRA_GPIO_SD2_WP
,
.
power_gpio
=
TEGRA_GPIO_SD2_POWER
,
};
static
struct
tegra_sdhci_platform_data
sdhci_pdata4
=
{
.
cd_gpio
=
TEGRA_GPIO_SD4_CD
,
.
wp_gpio
=
TEGRA_GPIO_SD4_WP
,
.
power_gpio
=
TEGRA_GPIO_SD4_POWER
,
.
is_8bit
=
1
,
};
static
void
__init
tegra_harmony_init
(
void
)
{
tegra_clk_init_from_table
(
harmony_clk_init_table
);
harmony_pinmux_init
();
tegra_sdhci_device1
.
dev
.
platform_data
=
&
sdhci_pdata1
;
tegra_sdhci_device2
.
dev
.
platform_data
=
&
sdhci_pdata2
;
tegra_sdhci_device4
.
dev
.
platform_data
=
&
sdhci_pdata4
;
platform_add_devices
(
harmony_devices
,
ARRAY_SIZE
(
harmony_devices
));
harmony_i2c_init
();
harmony_regulator_init
();
}
MACHINE_START
(
HARMONY
,
"harmony"
)
.
atag_offset
=
0x100
,
.
fixup
=
tegra_harmony_fixup
,
.
map_io
=
tegra_map_common_io
,
.
init_early
=
tegra20_init_early
,
.
init_irq
=
tegra_init_irq
,
.
handle_irq
=
gic_handle_irq
,
.
timer
=
&
tegra_timer
,
.
init_machine
=
tegra_harmony_init
,
.
init_late
=
tegra_init_late
,
.
restart
=
tegra_assert_system_reset
,
MACHINE_END
arch/arm/mach-tegra/board-harmony.h
deleted
100644 → 0
View file @
a5b64ce6
/*
* arch/arm/mach-tegra/board-harmony.h
*
* Copyright (C) 2010 Google, Inc.
*
* This software is licensed under the terms of the GNU General Public
* License version 2, as published by the Free Software Foundation, and
* may be copied, distributed, and modified under those terms.
*
* 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.
*
*/
#ifndef _MACH_TEGRA_BOARD_HARMONY_H
#define _MACH_TEGRA_BOARD_HARMONY_H
#include <mach/gpio-tegra.h>
#define HARMONY_GPIO_TPS6586X(_x_) (TEGRA_NR_GPIOS + (_x_))
#define HARMONY_GPIO_WM8903(_x_) (HARMONY_GPIO_TPS6586X(4) + (_x_))
#define TEGRA_GPIO_SD2_CD TEGRA_GPIO_PI5
#define TEGRA_GPIO_SD2_WP TEGRA_GPIO_PH1
#define TEGRA_GPIO_SD2_POWER TEGRA_GPIO_PT3
#define TEGRA_GPIO_SD4_CD TEGRA_GPIO_PH2
#define TEGRA_GPIO_SD4_WP TEGRA_GPIO_PH3
#define TEGRA_GPIO_SD4_POWER TEGRA_GPIO_PI6
#define TEGRA_GPIO_CDC_IRQ TEGRA_GPIO_PX3
#define TEGRA_GPIO_SPKR_EN HARMONY_GPIO_WM8903(2)
#define TEGRA_GPIO_HP_DET TEGRA_GPIO_PW2
#define TEGRA_GPIO_INT_MIC_EN TEGRA_GPIO_PX0
#define TEGRA_GPIO_EXT_MIC_EN TEGRA_GPIO_PX1
#define TEGRA_GPIO_EN_VDD_1V05_GPIO HARMONY_GPIO_TPS6586X(2)
void
harmony_pinmux_init
(
void
);
int
harmony_regulator_init
(
void
);
#endif
arch/arm/mach-tegra/board-paz00-pinmux.c
deleted
100644 → 0
View file @
a5b64ce6
/*
* arch/arm/mach-tegra/board-paz00-pinmux.c
*
* Copyright (C) 2010 Marc Dietrich <marvin24@gmx.de>
* Copyright (c) 2012, NVIDIA CORPORATION. All rights reserved.
*
* This software is licensed under the terms of the GNU General Public
* License version 2, as published by the Free Software Foundation, and
* may be copied, distributed, and modified under those terms.
*
* 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/kernel.h>
#include "board-paz00.h"
#include "board-pinmux.h"
static
struct
pinctrl_map
paz00_map
[]
=
{
TEGRA_MAP_MUXCONF
(
"ata"
,
"gmi"
,
none
,
driven
),
TEGRA_MAP_MUXCONF
(
"atb"
,
"sdio4"
,
none
,
driven
),
TEGRA_MAP_MUXCONF
(
"atc"
,
"gmi"
,
none
,
driven
),
TEGRA_MAP_MUXCONF
(
"atd"
,
"gmi"
,
none
,
driven
),
TEGRA_MAP_MUXCONF
(
"ate"
,
"gmi"
,
none
,
driven
),
TEGRA_MAP_MUXCONF
(
"cdev1"
,
"plla_out"
,
none
,
driven
),
TEGRA_MAP_MUXCONF
(
"cdev2"
,
"pllp_out4"
,
down
,
driven
),
TEGRA_MAP_MUXCONF
(
"crtp"
,
"crt"
,
none
,
tristate
),
TEGRA_MAP_MUXCONF
(
"csus"
,
"pllc_out1"
,
down
,
tristate
),
TEGRA_MAP_MUXCONF
(
"dap1"
,
"dap1"
,
none
,
driven
),
TEGRA_MAP_MUXCONF
(
"dap2"
,
"gmi"
,
none
,
driven
),
TEGRA_MAP_MUXCONF
(
"dap3"
,
"dap3"
,
none
,
tristate
),
TEGRA_MAP_MUXCONF
(
"dap4"
,
"dap4"
,
none
,
tristate
),
TEGRA_MAP_MUXCONF
(
"ddc"
,
"i2c2"
,
up
,
driven
),
TEGRA_MAP_MUXCONF
(
"dta"
,
"rsvd1"
,
up
,
tristate
),
TEGRA_MAP_MUXCONF
(
"dtb"
,
"rsvd1"
,
none
,
tristate
),
TEGRA_MAP_MUXCONF
(
"dtc"
,
"rsvd1"
,
none
,
tristate
),
TEGRA_MAP_MUXCONF
(
"dtd"
,
"rsvd1"
,
up
,
tristate
),
TEGRA_MAP_MUXCONF
(
"dte"
,
"rsvd1"
,
none
,
tristate
),
TEGRA_MAP_MUXCONF
(
"dtf"
,
"i2c3"
,
none
,
driven
),
TEGRA_MAP_MUXCONF
(
"gma"
,
"sdio4"
,
none
,
driven
),
TEGRA_MAP_MUXCONF
(
"gmb"
,
"gmi"
,
none
,
driven
),
TEGRA_MAP_MUXCONF
(
"gmc"
,
"gmi"
,
none
,
driven
),
TEGRA_MAP_MUXCONF
(
"gmd"
,
"gmi"
,
none
,
driven
),
TEGRA_MAP_MUXCONF
(
"gme"
,
"sdio4"
,
none
,
driven
),
TEGRA_MAP_MUXCONF
(
"gpu"
,
"pwm"
,
none
,
driven
),
TEGRA_MAP_MUXCONF
(
"gpu7"
,
"rtck"
,
none
,
driven
),
TEGRA_MAP_MUXCONF
(
"gpv"
,
"pcie"
,
none
,
driven
),
TEGRA_MAP_MUXCONF
(
"hdint"
,
"hdmi"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"i2cp"
,
"i2cp"
,
none
,
driven
),
TEGRA_MAP_MUXCONF
(
"irrx"
,
"uarta"
,
up
,
driven
),
TEGRA_MAP_MUXCONF
(
"irtx"
,
"uarta"
,
up
,
driven
),
TEGRA_MAP_MUXCONF
(
"kbca"
,
"kbc"
,
up
,
driven
),
TEGRA_MAP_MUXCONF
(
"kbcb"
,
"sdio2"
,
up
,
driven
),
TEGRA_MAP_MUXCONF
(
"kbcc"
,
"kbc"
,
up
,
driven
),
TEGRA_MAP_MUXCONF
(
"kbcd"
,
"sdio2"
,
up
,
driven
),
TEGRA_MAP_MUXCONF
(
"kbce"
,
"kbc"
,
up
,
driven
),
TEGRA_MAP_MUXCONF
(
"kbcf"
,
"kbc"
,
up
,
driven
),
TEGRA_MAP_MUXCONF
(
"lcsn"
,
"displaya"
,
na
,
tristate
),
TEGRA_MAP_MUXCONF
(
"ld0"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"ld1"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"ld10"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"ld11"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"ld12"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"ld13"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"ld14"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"ld15"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"ld16"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"ld17"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"ld2"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"ld3"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"ld4"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"ld5"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"ld6"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"ld7"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"ld8"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"ld9"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"ldc"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"ldi"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"lhp0"
,
"displaya"
,
na
,
tristate
),
TEGRA_MAP_MUXCONF
(
"lhp1"
,
"displaya"
,
na
,
tristate
),
TEGRA_MAP_MUXCONF
(
"lhp2"
,
"displaya"
,
na
,
tristate
),
TEGRA_MAP_MUXCONF
(
"lhs"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"lm0"
,
"displaya"
,
na
,
tristate
),
TEGRA_MAP_MUXCONF
(
"lm1"
,
"displaya"
,
na
,
tristate
),
TEGRA_MAP_MUXCONF
(
"lpp"
,
"displaya"
,
na
,
tristate
),
TEGRA_MAP_MUXCONF
(
"lpw0"
,
"displaya"
,
na
,
tristate
),
TEGRA_MAP_MUXCONF
(
"lpw1"
,
"displaya"
,
na
,
tristate
),
TEGRA_MAP_MUXCONF
(
"lpw2"
,
"displaya"
,
na
,
tristate
),
TEGRA_MAP_MUXCONF
(
"lsc0"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"lsc1"
,
"displaya"
,
na
,
tristate
),
TEGRA_MAP_MUXCONF
(
"lsck"
,
"displaya"
,
na
,
tristate
),
TEGRA_MAP_MUXCONF
(
"lsda"
,
"displaya"
,
na
,
tristate
),
TEGRA_MAP_MUXCONF
(
"lsdi"
,
"displaya"
,
na
,
tristate
),
TEGRA_MAP_MUXCONF
(
"lspi"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"lvp0"
,
"displaya"
,
na
,
tristate
),
TEGRA_MAP_MUXCONF
(
"lvp1"
,
"displaya"
,
na
,
tristate
),
TEGRA_MAP_MUXCONF
(
"lvs"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"owc"
,
"owr"
,
up
,
tristate
),
TEGRA_MAP_MUXCONF
(
"pmc"
,
"pwr_on"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"pta"
,
"hdmi"
,
none
,
driven
),
TEGRA_MAP_MUXCONF
(
"rm"
,
"i2c1"
,
none
,
driven
),
TEGRA_MAP_MUXCONF
(
"sdb"
,
"pwm"
,
na
,
tristate
),
TEGRA_MAP_MUXCONF
(
"sdc"
,
"twc"
,
up
,
tristate
),
TEGRA_MAP_MUXCONF
(
"sdd"
,
"pwm"
,
up
,
tristate
),
TEGRA_MAP_MUXCONF
(
"sdio1"
,
"sdio1"
,
none
,
driven
),
TEGRA_MAP_MUXCONF
(
"slxa"
,
"pcie"
,
none
,
tristate
),
TEGRA_MAP_MUXCONF
(
"slxc"
,
"spi4"
,
none
,
tristate
),
TEGRA_MAP_MUXCONF
(
"slxd"
,
"spi4"
,
none
,
tristate
),
TEGRA_MAP_MUXCONF
(
"slxk"
,
"pcie"
,
none
,
driven
),
TEGRA_MAP_MUXCONF
(
"spdi"
,
"rsvd2"
,
none
,
tristate
),
TEGRA_MAP_MUXCONF
(
"spdo"
,
"rsvd2"
,
none
,
driven
),
TEGRA_MAP_MUXCONF
(
"spia"
,
"gmi"
,
down
,
tristate
),
TEGRA_MAP_MUXCONF
(
"spib"
,
"gmi"
,
down
,
tristate
),
TEGRA_MAP_MUXCONF
(
"spic"
,
"gmi"
,
up
,
driven
),
TEGRA_MAP_MUXCONF
(
"spid"
,
"gmi"
,
down
,
tristate
),
TEGRA_MAP_MUXCONF
(
"spie"
,
"gmi"
,
up
,
tristate
),
TEGRA_MAP_MUXCONF
(
"spif"
,
"rsvd4"
,
down
,
tristate
),
TEGRA_MAP_MUXCONF
(
"spig"
,
"spi2_alt"
,
up
,
driven
),
TEGRA_MAP_MUXCONF
(
"spih"
,
"spi2_alt"
,
up
,
tristate
),
TEGRA_MAP_MUXCONF
(
"uaa"
,
"ulpi"
,
up
,
driven
),
TEGRA_MAP_MUXCONF
(
"uab"
,
"ulpi"
,
up
,
driven
),
TEGRA_MAP_MUXCONF
(
"uac"
,
"rsvd4"
,
none
,
driven
),
TEGRA_MAP_MUXCONF
(
"uad"
,
"spdif"
,
up
,
tristate
),
TEGRA_MAP_MUXCONF
(
"uca"
,
"uartc"
,
up
,
tristate
),
TEGRA_MAP_MUXCONF
(
"ucb"
,
"uartc"
,
up
,
tristate
),
TEGRA_MAP_MUXCONF
(
"uda"
,
"ulpi"
,
none
,
driven
),
TEGRA_MAP_CONF
(
"ck32"
,
none
,
na
),
TEGRA_MAP_CONF
(
"ddrc"
,
none
,
na
),
TEGRA_MAP_CONF
(
"pmca"
,
none
,
na
),
TEGRA_MAP_CONF
(
"pmcb"
,
none
,
na
),
TEGRA_MAP_CONF
(
"pmcc"
,
none
,
na
),
TEGRA_MAP_CONF
(
"pmcd"
,
none
,
na
),
TEGRA_MAP_CONF
(
"pmce"
,
none
,
na
),
TEGRA_MAP_CONF
(
"xm2c"
,
none
,
na
),
TEGRA_MAP_CONF
(
"xm2d"
,
none
,
na
),
TEGRA_MAP_CONF
(
"ls"
,
up
,
na
),
TEGRA_MAP_CONF
(
"lc"
,
up
,
na
),
TEGRA_MAP_CONF
(
"ld17_0"
,
down
,
na
),
TEGRA_MAP_CONF
(
"ld19_18"
,
down
,
na
),
TEGRA_MAP_CONF
(
"ld21_20"
,
down
,
na
),
TEGRA_MAP_CONF
(
"ld23_22"
,
down
,
na
),
};
static
struct
tegra_board_pinmux_conf
conf
=
{
.
maps
=
paz00_map
,
.
map_count
=
ARRAY_SIZE
(
paz00_map
),
};
void
paz00_pinmux_init
(
void
)
{
tegra_board_pinmux_init
(
&
conf
,
NULL
);
}
arch/arm/mach-tegra/board-paz00.c
View file @
1f10478c
...
@@ -17,72 +17,10 @@
...
@@ -17,72 +17,10 @@
*
*
*/
*/
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/platform_device.h>
#include <linux/platform_device.h>
#include <linux/serial_8250.h>
#include <linux/of_serial.h>
#include <linux/clk.h>
#include <linux/dma-mapping.h>
#include <linux/gpio_keys.h>
#include <linux/pda_power.h>
#include <linux/io.h>
#include <linux/input.h>
#include <linux/i2c.h>
#include <linux/gpio.h>
#include <linux/rfkill-gpio.h>
#include <linux/rfkill-gpio.h>
#include <asm/hardware/gic.h>
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
#include <asm/mach/time.h>
#include <asm/setup.h>
#include <mach/iomap.h>
#include <mach/irqs.h>
#include <mach/sdhci.h>
#include "board.h"
#include "board-paz00.h"
#include "board-paz00.h"
#include "clock.h"
#include "devices.h"
#include "gpio-names.h"
static
struct
plat_serial8250_port
debug_uart_platform_data
[]
=
{
{
/* serial port on JP1 */
.
membase
=
IO_ADDRESS
(
TEGRA_UARTA_BASE
),
.
mapbase
=
TEGRA_UARTA_BASE
,
.
irq
=
INT_UARTA
,
.
flags
=
UPF_BOOT_AUTOCONF
|
UPF_FIXED_TYPE
,
.
type
=
PORT_TEGRA
,
.
handle_break
=
tegra_serial_handle_break
,
.
iotype
=
UPIO_MEM
,
.
regshift
=
2
,
.
uartclk
=
216000000
,
},
{
/* serial port on mini-pcie */
.
membase
=
IO_ADDRESS
(
TEGRA_UARTC_BASE
),
.
mapbase
=
TEGRA_UARTC_BASE
,
.
irq
=
INT_UARTC
,
.
flags
=
UPF_BOOT_AUTOCONF
|
UPF_FIXED_TYPE
,
.
type
=
PORT_TEGRA
,
.
handle_break
=
tegra_serial_handle_break
,
.
iotype
=
UPIO_MEM
,
.
regshift
=
2
,
.
uartclk
=
216000000
,
},
{
.
flags
=
0
}
};
static
struct
platform_device
debug_uart
=
{
.
name
=
"serial8250"
,
.
id
=
PLAT8250_DEV_PLATFORM
,
.
dev
=
{
.
platform_data
=
debug_uart_platform_data
,
},
};
static
struct
rfkill_gpio_platform_data
wifi_rfkill_platform_data
=
{
static
struct
rfkill_gpio_platform_data
wifi_rfkill_platform_data
=
{
.
name
=
"wifi_rfkill"
,
.
name
=
"wifi_rfkill"
,
...
@@ -99,137 +37,7 @@ static struct platform_device wifi_rfkill_device = {
...
@@ -99,137 +37,7 @@ static struct platform_device wifi_rfkill_device = {
},
},
};
};
static
struct
gpio_led
gpio_leds
[]
=
{
{
.
name
=
"wifi-led"
,
.
default_trigger
=
"rfkill0"
,
.
gpio
=
TEGRA_WIFI_LED
,
},
};
static
struct
gpio_led_platform_data
gpio_led_info
=
{
.
leds
=
gpio_leds
,
.
num_leds
=
ARRAY_SIZE
(
gpio_leds
),
};
static
struct
platform_device
leds_gpio
=
{
.
name
=
"leds-gpio"
,
.
id
=
-
1
,
.
dev
=
{
.
platform_data
=
&
gpio_led_info
,
},
};
static
struct
gpio_keys_button
paz00_gpio_keys_buttons
[]
=
{
{
.
code
=
KEY_POWER
,
.
gpio
=
TEGRA_GPIO_POWERKEY
,
.
active_low
=
1
,
.
desc
=
"Power"
,
.
type
=
EV_KEY
,
.
wakeup
=
1
,
},
};
static
struct
gpio_keys_platform_data
paz00_gpio_keys
=
{
.
buttons
=
paz00_gpio_keys_buttons
,
.
nbuttons
=
ARRAY_SIZE
(
paz00_gpio_keys_buttons
),
};
static
struct
platform_device
gpio_keys_device
=
{
.
name
=
"gpio-keys"
,
.
id
=
-
1
,
.
dev
=
{
.
platform_data
=
&
paz00_gpio_keys
,
},
};
static
struct
platform_device
*
paz00_devices
[]
__initdata
=
{
&
debug_uart
,
&
tegra_sdhci_device4
,
&
tegra_sdhci_device1
,
&
leds_gpio
,
&
gpio_keys_device
,
};
static
void
paz00_i2c_init
(
void
)
{
platform_device_register
(
&
tegra_i2c_device1
);
platform_device_register
(
&
tegra_i2c_device2
);
platform_device_register
(
&
tegra_i2c_device4
);
}
static
void
paz00_usb_init
(
void
)
{
tegra_ehci2_ulpi_phy_config
.
reset_gpio
=
TEGRA_ULPI_RST
;
platform_device_register
(
&
tegra_ehci2_device
);
platform_device_register
(
&
tegra_ehci3_device
);
}
static
void
__init
tegra_paz00_fixup
(
struct
tag
*
tags
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
mi
->
nr_banks
=
1
;
mi
->
bank
[
0
].
start
=
PHYS_OFFSET
;
mi
->
bank
[
0
].
size
=
448
*
SZ_1M
;
}
static
__initdata
struct
tegra_clk_init_table
paz00_clk_init_table
[]
=
{
/* name parent rate enabled */
{
"uarta"
,
"pll_p"
,
216000000
,
true
},
{
"uartc"
,
"pll_p"
,
216000000
,
true
},
{
"usbd"
,
"clk_m"
,
12000000
,
false
},
{
"usb2"
,
"clk_m"
,
12000000
,
false
},
{
"usb3"
,
"clk_m"
,
12000000
,
false
},
{
NULL
,
NULL
,
0
,
0
},
};
static
struct
tegra_sdhci_platform_data
sdhci_pdata1
=
{
.
cd_gpio
=
TEGRA_GPIO_SD1_CD
,
.
wp_gpio
=
TEGRA_GPIO_SD1_WP
,
.
power_gpio
=
TEGRA_GPIO_SD1_POWER
,
};
static
struct
tegra_sdhci_platform_data
sdhci_pdata4
=
{
.
cd_gpio
=
-
1
,
.
wp_gpio
=
-
1
,
.
power_gpio
=
-
1
,
.
is_8bit
=
1
,
};
void
__init
tegra_paz00_wifikill_init
(
void
)
void
__init
tegra_paz00_wifikill_init
(
void
)
{
{
platform_device_register
(
&
wifi_rfkill_device
);
platform_device_register
(
&
wifi_rfkill_device
);
}
}
static
void
__init
tegra_paz00_init
(
void
)
{
tegra_clk_init_from_table
(
paz00_clk_init_table
);
paz00_pinmux_init
();
tegra_sdhci_device1
.
dev
.
platform_data
=
&
sdhci_pdata1
;
tegra_sdhci_device4
.
dev
.
platform_data
=
&
sdhci_pdata4
;
platform_add_devices
(
paz00_devices
,
ARRAY_SIZE
(
paz00_devices
));
tegra_paz00_wifikill_init
();
paz00_i2c_init
();
paz00_usb_init
();
}
MACHINE_START
(
PAZ00
,
"Toshiba AC100 / Dynabook AZ"
)
.
atag_offset
=
0x100
,
.
fixup
=
tegra_paz00_fixup
,
.
map_io
=
tegra_map_common_io
,
.
init_early
=
tegra20_init_early
,
.
init_irq
=
tegra_init_irq
,
.
handle_irq
=
gic_handle_irq
,
.
timer
=
&
tegra_timer
,
.
init_machine
=
tegra_paz00_init
,
.
init_late
=
tegra_init_late
,
.
restart
=
tegra_assert_system_reset
,
MACHINE_END
arch/arm/mach-tegra/board-paz00.h
View file @
1f10478c
...
@@ -17,24 +17,9 @@
...
@@ -17,24 +17,9 @@
#ifndef _MACH_TEGRA_BOARD_PAZ00_H
#ifndef _MACH_TEGRA_BOARD_PAZ00_H
#define _MACH_TEGRA_BOARD_PAZ00_H
#define _MACH_TEGRA_BOARD_PAZ00_H
#include
<mach/gpio-tegra.h>
#include
"gpio-names.h"
/* SDCARD */
#define TEGRA_GPIO_SD1_CD TEGRA_GPIO_PV5
#define TEGRA_GPIO_SD1_WP TEGRA_GPIO_PH1
#define TEGRA_GPIO_SD1_POWER TEGRA_GPIO_PV1
/* ULPI */
#define TEGRA_ULPI_RST TEGRA_GPIO_PV0
/* WIFI */
#define TEGRA_WIFI_PWRN TEGRA_GPIO_PK5
#define TEGRA_WIFI_PWRN TEGRA_GPIO_PK5
#define TEGRA_WIFI_RST TEGRA_GPIO_PD1
#define TEGRA_WIFI_RST TEGRA_GPIO_PD1
#define TEGRA_WIFI_LED TEGRA_GPIO_PD0
/* WakeUp */
#define TEGRA_GPIO_POWERKEY TEGRA_GPIO_PJ7
void
paz00_pinmux_init
(
void
);
#endif
#endif
arch/arm/mach-tegra/board-trimslice-pinmux.c
deleted
100644 → 0
View file @
a5b64ce6
/*
* arch/arm/mach-tegra/board-trimslice-pinmux.c
*
* Copyright (C) 2011 CompuLab, Ltd.
* Copyright (c) 2012, NVIDIA CORPORATION. All rights reserved.
*
* This software is licensed under the terms of the GNU General Public
* License version 2, as published by the Free Software Foundation, and
* may be copied, distributed, and modified under those terms.
*
* 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/kernel.h>
#include "board-trimslice.h"
#include "board-pinmux.h"
static
struct
pinctrl_map
trimslice_map
[]
=
{
TEGRA_MAP_MUXCONF
(
"ata"
,
"ide"
,
none
,
tristate
),
TEGRA_MAP_MUXCONF
(
"atb"
,
"sdio4"
,
none
,
driven
),
TEGRA_MAP_MUXCONF
(
"atc"
,
"nand"
,
none
,
tristate
),
TEGRA_MAP_MUXCONF
(
"atd"
,
"gmi"
,
none
,
tristate
),
TEGRA_MAP_MUXCONF
(
"ate"
,
"gmi"
,
none
,
tristate
),
TEGRA_MAP_MUXCONF
(
"cdev1"
,
"plla_out"
,
none
,
driven
),
TEGRA_MAP_MUXCONF
(
"cdev2"
,
"pllp_out4"
,
down
,
tristate
),
TEGRA_MAP_MUXCONF
(
"crtp"
,
"crt"
,
none
,
tristate
),
TEGRA_MAP_MUXCONF
(
"csus"
,
"vi_sensor_clk"
,
down
,
tristate
),
TEGRA_MAP_MUXCONF
(
"dap1"
,
"dap1"
,
none
,
driven
),
TEGRA_MAP_MUXCONF
(
"dap2"
,
"dap2"
,
none
,
tristate
),
TEGRA_MAP_MUXCONF
(
"dap3"
,
"dap3"
,
none
,
tristate
),
TEGRA_MAP_MUXCONF
(
"dap4"
,
"dap4"
,
none
,
tristate
),
TEGRA_MAP_MUXCONF
(
"ddc"
,
"i2c2"
,
up
,
driven
),
TEGRA_MAP_MUXCONF
(
"dta"
,
"vi"
,
none
,
tristate
),
TEGRA_MAP_MUXCONF
(
"dtb"
,
"vi"
,
none
,
tristate
),
TEGRA_MAP_MUXCONF
(
"dtc"
,
"vi"
,
none
,
tristate
),
TEGRA_MAP_MUXCONF
(
"dtd"
,
"vi"
,
none
,
tristate
),
TEGRA_MAP_MUXCONF
(
"dte"
,
"vi"
,
none
,
tristate
),
TEGRA_MAP_MUXCONF
(
"dtf"
,
"i2c3"
,
up
,
driven
),
TEGRA_MAP_MUXCONF
(
"gma"
,
"sdio4"
,
none
,
driven
),
TEGRA_MAP_MUXCONF
(
"gmb"
,
"nand"
,
none
,
tristate
),
TEGRA_MAP_MUXCONF
(
"gmc"
,
"sflash"
,
none
,
driven
),
TEGRA_MAP_MUXCONF
(
"gmd"
,
"sflash"
,
none
,
driven
),
TEGRA_MAP_MUXCONF
(
"gme"
,
"gmi"
,
none
,
tristate
),
TEGRA_MAP_MUXCONF
(
"gpu"
,
"uarta"
,
none
,
driven
),
TEGRA_MAP_MUXCONF
(
"gpu7"
,
"rtck"
,
none
,
driven
),
TEGRA_MAP_MUXCONF
(
"gpv"
,
"pcie"
,
none
,
driven
),
TEGRA_MAP_MUXCONF
(
"hdint"
,
"hdmi"
,
na
,
tristate
),
TEGRA_MAP_MUXCONF
(
"i2cp"
,
"i2cp"
,
none
,
tristate
),
TEGRA_MAP_MUXCONF
(
"irrx"
,
"uartb"
,
up
,
tristate
),
TEGRA_MAP_MUXCONF
(
"irtx"
,
"uartb"
,
up
,
tristate
),
TEGRA_MAP_MUXCONF
(
"kbca"
,
"kbc"
,
up
,
tristate
),
TEGRA_MAP_MUXCONF
(
"kbcb"
,
"kbc"
,
up
,
tristate
),
TEGRA_MAP_MUXCONF
(
"kbcc"
,
"kbc"
,
up
,
tristate
),
TEGRA_MAP_MUXCONF
(
"kbcd"
,
"kbc"
,
up
,
tristate
),
TEGRA_MAP_MUXCONF
(
"kbce"
,
"kbc"
,
up
,
tristate
),
TEGRA_MAP_MUXCONF
(
"kbcf"
,
"kbc"
,
up
,
tristate
),
TEGRA_MAP_MUXCONF
(
"lcsn"
,
"displaya"
,
na
,
tristate
),
TEGRA_MAP_MUXCONF
(
"ld0"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"ld1"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"ld10"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"ld11"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"ld12"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"ld13"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"ld14"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"ld15"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"ld16"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"ld17"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"ld2"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"ld3"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"ld4"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"ld5"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"ld6"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"ld7"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"ld8"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"ld9"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"ldc"
,
"displaya"
,
na
,
tristate
),
TEGRA_MAP_MUXCONF
(
"ldi"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"lhp0"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"lhp1"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"lhp2"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"lhs"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"lm0"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"lm1"
,
"displaya"
,
na
,
tristate
),
TEGRA_MAP_MUXCONF
(
"lpp"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"lpw0"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"lpw1"
,
"displaya"
,
na
,
tristate
),
TEGRA_MAP_MUXCONF
(
"lpw2"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"lsc0"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"lsc1"
,
"displaya"
,
na
,
tristate
),
TEGRA_MAP_MUXCONF
(
"lsck"
,
"displaya"
,
na
,
tristate
),
TEGRA_MAP_MUXCONF
(
"lsda"
,
"displaya"
,
na
,
tristate
),
TEGRA_MAP_MUXCONF
(
"lsdi"
,
"displaya"
,
na
,
tristate
),
TEGRA_MAP_MUXCONF
(
"lspi"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"lvp0"
,
"displaya"
,
na
,
tristate
),
TEGRA_MAP_MUXCONF
(
"lvp1"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"lvs"
,
"displaya"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"owc"
,
"rsvd2"
,
up
,
tristate
),
TEGRA_MAP_MUXCONF
(
"pmc"
,
"pwr_on"
,
na
,
tristate
),
TEGRA_MAP_MUXCONF
(
"pta"
,
"gmi"
,
none
,
tristate
),
TEGRA_MAP_MUXCONF
(
"rm"
,
"i2c1"
,
up
,
driven
),
TEGRA_MAP_MUXCONF
(
"sdb"
,
"pwm"
,
na
,
driven
),
TEGRA_MAP_MUXCONF
(
"sdc"
,
"pwm"
,
up
,
driven
),
TEGRA_MAP_MUXCONF
(
"sdd"
,
"pwm"
,
up
,
driven
),
TEGRA_MAP_MUXCONF
(
"sdio1"
,
"sdio1"
,
none
,
driven
),
TEGRA_MAP_MUXCONF
(
"slxa"
,
"pcie"
,
none
,
driven
),
TEGRA_MAP_MUXCONF
(
"slxc"
,
"sdio3"
,
none
,
tristate
),
TEGRA_MAP_MUXCONF
(
"slxd"
,
"sdio3"
,
none
,
tristate
),
TEGRA_MAP_MUXCONF
(
"slxk"
,
"pcie"
,
none
,
driven
),
TEGRA_MAP_MUXCONF
(
"spdi"
,
"spdif"
,
none
,
tristate
),
TEGRA_MAP_MUXCONF
(
"spdo"
,
"spdif"
,
none
,
tristate
),
TEGRA_MAP_MUXCONF
(
"spia"
,
"spi2"
,
down
,
tristate
),
TEGRA_MAP_MUXCONF
(
"spib"
,
"spi2"
,
down
,
tristate
),
TEGRA_MAP_MUXCONF
(
"spic"
,
"spi2"
,
up
,
tristate
),
TEGRA_MAP_MUXCONF
(
"spid"
,
"spi1"
,
down
,
tristate
),
TEGRA_MAP_MUXCONF
(
"spie"
,
"spi1"
,
up
,
tristate
),
TEGRA_MAP_MUXCONF
(
"spif"
,
"spi1"
,
down
,
tristate
),
TEGRA_MAP_MUXCONF
(
"spig"
,
"spi2_alt"
,
up
,
tristate
),
TEGRA_MAP_MUXCONF
(
"spih"
,
"spi2_alt"
,
up
,
tristate
),
TEGRA_MAP_MUXCONF
(
"uaa"
,
"ulpi"
,
up
,
tristate
),
TEGRA_MAP_MUXCONF
(
"uab"
,
"ulpi"
,
up
,
tristate
),
TEGRA_MAP_MUXCONF
(
"uac"
,
"rsvd2"
,
none
,
driven
),
TEGRA_MAP_MUXCONF
(
"uad"
,
"irda"
,
up
,
tristate
),
TEGRA_MAP_MUXCONF
(
"uca"
,
"uartc"
,
up
,
tristate
),
TEGRA_MAP_MUXCONF
(
"ucb"
,
"uartc"
,
up
,
tristate
),
TEGRA_MAP_MUXCONF
(
"uda"
,
"ulpi"
,
none
,
tristate
),
TEGRA_MAP_CONF
(
"ck32"
,
none
,
na
),
TEGRA_MAP_CONF
(
"ddrc"
,
none
,
na
),
TEGRA_MAP_CONF
(
"pmca"
,
none
,
na
),
TEGRA_MAP_CONF
(
"pmcb"
,
none
,
na
),
TEGRA_MAP_CONF
(
"pmcc"
,
none
,
na
),
TEGRA_MAP_CONF
(
"pmcd"
,
none
,
na
),
TEGRA_MAP_CONF
(
"pmce"
,
none
,
na
),
TEGRA_MAP_CONF
(
"xm2c"
,
none
,
na
),
TEGRA_MAP_CONF
(
"xm2d"
,
none
,
na
),
TEGRA_MAP_CONF
(
"ls"
,
up
,
na
),
TEGRA_MAP_CONF
(
"lc"
,
up
,
na
),
TEGRA_MAP_CONF
(
"ld17_0"
,
down
,
na
),
TEGRA_MAP_CONF
(
"ld19_18"
,
down
,
na
),
TEGRA_MAP_CONF
(
"ld21_20"
,
down
,
na
),
TEGRA_MAP_CONF
(
"ld23_22"
,
down
,
na
),
};
static
struct
tegra_board_pinmux_conf
conf
=
{
.
maps
=
trimslice_map
,
.
map_count
=
ARRAY_SIZE
(
trimslice_map
),
};
void
trimslice_pinmux_init
(
void
)
{
tegra_board_pinmux_init
(
&
conf
,
NULL
);
}
arch/arm/mach-tegra/board-trimslice.c
deleted
100644 → 0
View file @
a5b64ce6
/*
* arch/arm/mach-tegra/board-trimslice.c
*
* Copyright (C) 2011 CompuLab, Ltd.
* Author: Mike Rapoport <mike@compulab.co.il>
*
* Based on board-harmony.c
* Copyright (C) 2010 Google, Inc.
*
* This software is licensed under the terms of the GNU General Public
* License version 2, as published by the Free Software Foundation, and
* may be copied, distributed, and modified under those terms.
*
* 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/kernel.h>
#include <linux/init.h>
#include <linux/platform_device.h>
#include <linux/serial_8250.h>
#include <linux/of_serial.h>
#include <linux/io.h>
#include <linux/i2c.h>
#include <linux/gpio.h>
#include <linux/platform_data/tegra_usb.h>
#include <asm/hardware/gic.h>
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
#include <asm/setup.h>
#include <mach/iomap.h>
#include <mach/sdhci.h>
#include "board.h"
#include "clock.h"
#include "devices.h"
#include "gpio-names.h"
#include "board-trimslice.h"
static
struct
plat_serial8250_port
debug_uart_platform_data
[]
=
{
{
.
membase
=
IO_ADDRESS
(
TEGRA_UARTA_BASE
),
.
mapbase
=
TEGRA_UARTA_BASE
,
.
irq
=
INT_UARTA
,
.
flags
=
UPF_BOOT_AUTOCONF
|
UPF_FIXED_TYPE
,
.
type
=
PORT_TEGRA
,
.
handle_break
=
tegra_serial_handle_break
,
.
iotype
=
UPIO_MEM
,
.
regshift
=
2
,
.
uartclk
=
216000000
,
},
{
.
flags
=
0
}
};
static
struct
platform_device
debug_uart
=
{
.
name
=
"serial8250"
,
.
id
=
PLAT8250_DEV_PLATFORM
,
.
dev
=
{
.
platform_data
=
debug_uart_platform_data
,
},
};
static
struct
tegra_sdhci_platform_data
sdhci_pdata1
=
{
.
cd_gpio
=
-
1
,
.
wp_gpio
=
-
1
,
.
power_gpio
=
-
1
,
};
static
struct
tegra_sdhci_platform_data
sdhci_pdata4
=
{
.
cd_gpio
=
TRIMSLICE_GPIO_SD4_CD
,
.
wp_gpio
=
TRIMSLICE_GPIO_SD4_WP
,
.
power_gpio
=
-
1
,
};
static
struct
platform_device
trimslice_audio_device
=
{
.
name
=
"tegra-snd-trimslice"
,
.
id
=
0
,
};
static
struct
platform_device
*
trimslice_devices
[]
__initdata
=
{
&
debug_uart
,
&
tegra_sdhci_device1
,
&
tegra_sdhci_device4
,
&
tegra_i2s_device1
,
&
tegra_das_device
,
&
trimslice_audio_device
,
};
static
struct
i2c_board_info
trimslice_i2c3_board_info
[]
=
{
{
I2C_BOARD_INFO
(
"tlv320aic23"
,
0x1a
),
},
{
I2C_BOARD_INFO
(
"em3027"
,
0x56
),
},
};
static
void
trimslice_i2c_init
(
void
)
{
platform_device_register
(
&
tegra_i2c_device1
);
platform_device_register
(
&
tegra_i2c_device2
);
platform_device_register
(
&
tegra_i2c_device3
);
i2c_register_board_info
(
2
,
trimslice_i2c3_board_info
,
ARRAY_SIZE
(
trimslice_i2c3_board_info
));
}
static
void
trimslice_usb_init
(
void
)
{
struct
tegra_ehci_platform_data
*
pdata
;
pdata
=
tegra_ehci1_device
.
dev
.
platform_data
;
pdata
->
vbus_gpio
=
TRIMSLICE_GPIO_USB1_MODE
;
tegra_ehci2_ulpi_phy_config
.
reset_gpio
=
TEGRA_GPIO_PV0
;
platform_device_register
(
&
tegra_ehci3_device
);
platform_device_register
(
&
tegra_ehci2_device
);
platform_device_register
(
&
tegra_ehci1_device
);
}
static
void
__init
tegra_trimslice_fixup
(
struct
tag
*
tags
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
mi
->
nr_banks
=
2
;
mi
->
bank
[
0
].
start
=
PHYS_OFFSET
;
mi
->
bank
[
0
].
size
=
448
*
SZ_1M
;
mi
->
bank
[
1
].
start
=
SZ_512M
;
mi
->
bank
[
1
].
size
=
SZ_512M
;
}
static
__initdata
struct
tegra_clk_init_table
trimslice_clk_init_table
[]
=
{
/* name parent rate enabled */
{
"uarta"
,
"pll_p"
,
216000000
,
true
},
{
"pll_a"
,
"pll_p_out1"
,
56448000
,
true
},
{
"pll_a_out0"
,
"pll_a"
,
11289600
,
true
},
{
"cdev1"
,
NULL
,
0
,
true
},
{
"i2s1"
,
"pll_a_out0"
,
11289600
,
false
},
{
NULL
,
NULL
,
0
,
0
},
};
static
int
__init
tegra_trimslice_pci_init
(
void
)
{
if
(
!
machine_is_trimslice
())
return
0
;
return
tegra_pcie_init
(
true
,
true
);
}
subsys_initcall
(
tegra_trimslice_pci_init
);
static
void
__init
tegra_trimslice_init
(
void
)
{
tegra_clk_init_from_table
(
trimslice_clk_init_table
);
trimslice_pinmux_init
();
tegra_sdhci_device1
.
dev
.
platform_data
=
&
sdhci_pdata1
;
tegra_sdhci_device4
.
dev
.
platform_data
=
&
sdhci_pdata4
;
platform_add_devices
(
trimslice_devices
,
ARRAY_SIZE
(
trimslice_devices
));
trimslice_i2c_init
();
trimslice_usb_init
();
}
MACHINE_START
(
TRIMSLICE
,
"trimslice"
)
.
atag_offset
=
0x100
,
.
fixup
=
tegra_trimslice_fixup
,
.
map_io
=
tegra_map_common_io
,
.
init_early
=
tegra20_init_early
,
.
init_irq
=
tegra_init_irq
,
.
handle_irq
=
gic_handle_irq
,
.
timer
=
&
tegra_timer
,
.
init_machine
=
tegra_trimslice_init
,
.
init_late
=
tegra_init_late
,
.
restart
=
tegra_assert_system_reset
,
MACHINE_END
arch/arm/mach-tegra/board-trimslice.h
deleted
100644 → 0
View file @
a5b64ce6
/*
* arch/arm/mach-tegra/board-trimslice.h
*
* Copyright (C) 2011 CompuLab, Ltd.
*
* This software is licensed under the terms of the GNU General Public
* License version 2, as published by the Free Software Foundation, and
* may be copied, distributed, and modified under those terms.
*
* 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.
*
*/
#ifndef _MACH_TEGRA_BOARD_TRIMSLICE_H
#define _MACH_TEGRA_BOARD_TRIMSLICE_H
#include <mach/gpio-tegra.h>
#define TRIMSLICE_GPIO_SD4_CD TEGRA_GPIO_PP1
/* mmc4 cd */
#define TRIMSLICE_GPIO_SD4_WP TEGRA_GPIO_PP2
/* mmc4 wp */
#define TRIMSLICE_GPIO_USB1_MODE TEGRA_GPIO_PV2
/* USB1 mode */
#define TRIMSLICE_GPIO_USB2_RST TEGRA_GPIO_PV0
/* USB2 PHY reset */
void
trimslice_pinmux_init
(
void
);
#endif
drivers/mfd/tps6586x.c
View file @
1f10478c
...
@@ -25,6 +25,7 @@
...
@@ -25,6 +25,7 @@
#include <linux/i2c.h>
#include <linux/i2c.h>
#include <linux/regmap.h>
#include <linux/regmap.h>
#include <linux/regulator/of_regulator.h>
#include <linux/regulator/of_regulator.h>
#include <linux/regulator/machine.h>
#include <linux/mfd/core.h>
#include <linux/mfd/core.h>
#include <linux/mfd/tps6586x.h>
#include <linux/mfd/tps6586x.h>
...
@@ -346,6 +347,7 @@ static int __devinit tps6586x_add_subdevs(struct tps6586x *tps6586x,
...
@@ -346,6 +347,7 @@ static int __devinit tps6586x_add_subdevs(struct tps6586x *tps6586x,
#ifdef CONFIG_OF
#ifdef CONFIG_OF
static
struct
of_regulator_match
tps6586x_matches
[]
=
{
static
struct
of_regulator_match
tps6586x_matches
[]
=
{
{
.
name
=
"sys"
,
.
driver_data
=
(
void
*
)
TPS6586X_ID_SYS
},
{
.
name
=
"sm0"
,
.
driver_data
=
(
void
*
)
TPS6586X_ID_SM_0
},
{
.
name
=
"sm0"
,
.
driver_data
=
(
void
*
)
TPS6586X_ID_SM_0
},
{
.
name
=
"sm1"
,
.
driver_data
=
(
void
*
)
TPS6586X_ID_SM_1
},
{
.
name
=
"sm1"
,
.
driver_data
=
(
void
*
)
TPS6586X_ID_SM_1
},
{
.
name
=
"sm2"
,
.
driver_data
=
(
void
*
)
TPS6586X_ID_SM_2
},
{
.
name
=
"sm2"
,
.
driver_data
=
(
void
*
)
TPS6586X_ID_SM_2
},
...
@@ -369,6 +371,7 @@ static struct tps6586x_platform_data *tps6586x_parse_dt(struct i2c_client *clien
...
@@ -369,6 +371,7 @@ static struct tps6586x_platform_data *tps6586x_parse_dt(struct i2c_client *clien
struct
tps6586x_platform_data
*
pdata
;
struct
tps6586x_platform_data
*
pdata
;
struct
tps6586x_subdev_info
*
devs
;
struct
tps6586x_subdev_info
*
devs
;
struct
device_node
*
regs
;
struct
device_node
*
regs
;
const
char
*
sys_rail_name
=
NULL
;
unsigned
int
count
;
unsigned
int
count
;
unsigned
int
i
,
j
;
unsigned
int
i
,
j
;
int
err
;
int
err
;
...
@@ -391,12 +394,22 @@ static struct tps6586x_platform_data *tps6586x_parse_dt(struct i2c_client *clien
...
@@ -391,12 +394,22 @@ static struct tps6586x_platform_data *tps6586x_parse_dt(struct i2c_client *clien
return
NULL
;
return
NULL
;
for
(
i
=
0
,
j
=
0
;
i
<
num
&&
j
<
count
;
i
++
)
{
for
(
i
=
0
,
j
=
0
;
i
<
num
&&
j
<
count
;
i
++
)
{
struct
regulator_init_data
*
reg_idata
;
if
(
!
tps6586x_matches
[
i
].
init_data
)
if
(
!
tps6586x_matches
[
i
].
init_data
)
continue
;
continue
;
reg_idata
=
tps6586x_matches
[
i
].
init_data
;
devs
[
j
].
name
=
"tps6586x-regulator"
;
devs
[
j
].
name
=
"tps6586x-regulator"
;
devs
[
j
].
platform_data
=
tps6586x_matches
[
i
].
init_data
;
devs
[
j
].
platform_data
=
tps6586x_matches
[
i
].
init_data
;
devs
[
j
].
id
=
(
int
)
tps6586x_matches
[
i
].
driver_data
;
devs
[
j
].
id
=
(
int
)
tps6586x_matches
[
i
].
driver_data
;
if
(
devs
[
j
].
id
==
TPS6586X_ID_SYS
)
sys_rail_name
=
reg_idata
->
constraints
.
name
;
if
((
devs
[
j
].
id
==
TPS6586X_ID_LDO_5
)
||
(
devs
[
j
].
id
==
TPS6586X_ID_LDO_RTC
))
reg_idata
->
supply_regulator
=
sys_rail_name
;
devs
[
j
].
of_node
=
tps6586x_matches
[
i
].
of_node
;
devs
[
j
].
of_node
=
tps6586x_matches
[
i
].
of_node
;
j
++
;
j
++
;
}
}
...
...
drivers/regulator/tps6586x-regulator.c
View file @
1f10478c
...
@@ -162,6 +162,9 @@ static struct regulator_ops tps6586x_regulator_ops = {
...
@@ -162,6 +162,9 @@ static struct regulator_ops tps6586x_regulator_ops = {
.
disable
=
tps6586x_regulator_disable
,
.
disable
=
tps6586x_regulator_disable
,
};
};
static
struct
regulator_ops
tps6586x_sys_regulator_ops
=
{
};
static
const
unsigned
int
tps6586x_ldo0_voltages
[]
=
{
static
const
unsigned
int
tps6586x_ldo0_voltages
[]
=
{
1200000
,
1500000
,
1800000
,
2500000
,
2700000
,
2850000
,
3100000
,
3300000
,
1200000
,
1500000
,
1800000
,
2500000
,
2700000
,
2850000
,
3100000
,
3300000
,
};
};
...
@@ -230,15 +233,28 @@ static const unsigned int tps6586x_dvm_voltages[] = {
...
@@ -230,15 +233,28 @@ static const unsigned int tps6586x_dvm_voltages[] = {
TPS6586X_REGULATOR_DVM_GOREG(goreg, gobit) \
TPS6586X_REGULATOR_DVM_GOREG(goreg, gobit) \
}
}
#define TPS6586X_SYS_REGULATOR() \
{ \
.desc = { \
.supply_name = "sys", \
.name = "REG-SYS", \
.ops = &tps6586x_sys_regulator_ops, \
.type = REGULATOR_VOLTAGE, \
.id = TPS6586X_ID_SYS, \
.owner = THIS_MODULE, \
}, \
}
static
struct
tps6586x_regulator
tps6586x_regulator
[]
=
{
static
struct
tps6586x_regulator
tps6586x_regulator
[]
=
{
TPS6586X_SYS_REGULATOR
(),
TPS6586X_LDO
(
LDO_0
,
"vinldo01"
,
ldo0
,
SUPPLYV1
,
5
,
3
,
ENC
,
0
,
END
,
0
),
TPS6586X_LDO
(
LDO_0
,
"vinldo01"
,
ldo0
,
SUPPLYV1
,
5
,
3
,
ENC
,
0
,
END
,
0
),
TPS6586X_LDO
(
LDO_3
,
"vinldo23"
,
ldo
,
SUPPLYV4
,
0
,
3
,
ENC
,
2
,
END
,
2
),
TPS6586X_LDO
(
LDO_3
,
"vinldo23"
,
ldo
,
SUPPLYV4
,
0
,
3
,
ENC
,
2
,
END
,
2
),
TPS6586X_LDO
(
LDO_5
,
NULL
,
ldo
,
SUPPLYV6
,
0
,
3
,
ENE
,
6
,
ENE
,
6
),
TPS6586X_LDO
(
LDO_5
,
"REG-SYS"
,
ldo
,
SUPPLYV6
,
0
,
3
,
ENE
,
6
,
ENE
,
6
),
TPS6586X_LDO
(
LDO_6
,
"vinldo678"
,
ldo
,
SUPPLYV3
,
0
,
3
,
ENC
,
4
,
END
,
4
),
TPS6586X_LDO
(
LDO_6
,
"vinldo678"
,
ldo
,
SUPPLYV3
,
0
,
3
,
ENC
,
4
,
END
,
4
),
TPS6586X_LDO
(
LDO_7
,
"vinldo678"
,
ldo
,
SUPPLYV3
,
3
,
3
,
ENC
,
5
,
END
,
5
),
TPS6586X_LDO
(
LDO_7
,
"vinldo678"
,
ldo
,
SUPPLYV3
,
3
,
3
,
ENC
,
5
,
END
,
5
),
TPS6586X_LDO
(
LDO_8
,
"vinldo678"
,
ldo
,
SUPPLYV2
,
5
,
3
,
ENC
,
6
,
END
,
6
),
TPS6586X_LDO
(
LDO_8
,
"vinldo678"
,
ldo
,
SUPPLYV2
,
5
,
3
,
ENC
,
6
,
END
,
6
),
TPS6586X_LDO
(
LDO_9
,
"vinldo9"
,
ldo
,
SUPPLYV6
,
3
,
3
,
ENE
,
7
,
ENE
,
7
),
TPS6586X_LDO
(
LDO_9
,
"vinldo9"
,
ldo
,
SUPPLYV6
,
3
,
3
,
ENE
,
7
,
ENE
,
7
),
TPS6586X_LDO
(
LDO_RTC
,
NULL
,
ldo
,
SUPPLYV4
,
3
,
3
,
V4
,
7
,
V4
,
7
),
TPS6586X_LDO
(
LDO_RTC
,
"REG-SYS"
,
ldo
,
SUPPLYV4
,
3
,
3
,
V4
,
7
,
V4
,
7
),
TPS6586X_LDO
(
LDO_1
,
"vinldo01"
,
dvm
,
SUPPLYV1
,
0
,
5
,
ENC
,
1
,
END
,
1
),
TPS6586X_LDO
(
LDO_1
,
"vinldo01"
,
dvm
,
SUPPLYV1
,
0
,
5
,
ENC
,
1
,
END
,
1
),
TPS6586X_LDO
(
SM_2
,
"vin-sm2"
,
sm2
,
SUPPLYV2
,
0
,
5
,
ENC
,
7
,
END
,
7
),
TPS6586X_LDO
(
SM_2
,
"vin-sm2"
,
sm2
,
SUPPLYV2
,
0
,
5
,
ENC
,
7
,
END
,
7
),
...
...
include/linux/mfd/tps6586x.h
View file @
1f10478c
...
@@ -14,6 +14,7 @@
...
@@ -14,6 +14,7 @@
#define TPS6586X_SLEW_RATE_MASK 0x07
#define TPS6586X_SLEW_RATE_MASK 0x07
enum
{
enum
{
TPS6586X_ID_SYS
,
TPS6586X_ID_SM_0
,
TPS6586X_ID_SM_0
,
TPS6586X_ID_SM_1
,
TPS6586X_ID_SM_1
,
TPS6586X_ID_SM_2
,
TPS6586X_ID_SM_2
,
...
...
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