Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
kernel_linux
提交
1f10478c
K
kernel_linux
项目概览
OpenHarmony
/
kernel_linux
上一次同步 4 年多
通知
15
Star
8
Fork
2
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
kernel_linux
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
1f10478c
编写于
9月 14, 2012
作者:
S
Stephen Warren
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'for-3.7/board-removal' into for-3.7/cleanup2
上级
a5b64ce6
be972c32
变更
19
显示空白变更内容
内联
并排
Showing
19 changed file
with
328 addition
and
1368 deletion
+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
未找到文件。
Documentation/devicetree/bindings/regulator/tps6586x.txt
浏览文件 @
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
浏览文件 @
1f10478c
...
@@ -275,6 +275,160 @@
...
@@ -275,6 +275,160 @@
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 @@
...
@@ -310,6 +464,72 @@
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
已删除
100644 → 0
浏览文件 @
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
已删除
100644 → 0
浏览文件 @
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
已删除
100644 → 0
浏览文件 @
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
已删除
100644 → 0
浏览文件 @
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
已删除
100644 → 0
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
已删除
100644 → 0
浏览文件 @
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
已删除
100644 → 0
浏览文件 @
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
已删除
100644 → 0
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
浏览文件 @
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
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录