Commit 5c73cc4b authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'armsoc-dt' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc

Pull ARM DT updates from Olof Johansson:
 "As always, this tends to be one of our bigger branches.  There are
  lots of updates this release, but not that many jumps out as something
  that needs more detailed coverage.  Some of the highlights are:

   - DTs for the new Annapurna Labs Alpine platform

   - more graphics DT pieces falling into place on Exynos, bridges,
     clocks.

   - plenty of DT updates for Qualcomm platforms for various IP blocks

   - some churn on Tegra due to switch-over to tool-generated pinctrl
     data

   - misc fixes and updates for Atmel at91 platforms

   - various DT updates to add IP block support on Broadcom's Cygnus
     platforms

   - more updates for Renesas platforms as DT support is added for
     various IP blocks (IPMMU, display, audio, etc)"

* tag 'armsoc-dt' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (231 commits)
  ARM: dts: alpine: add internal pci
  Revert "ARM: dts: mt8135: Add pinctrl/GPIO/EINT node for mt8135."
  ARM: mvebu: use 0xf1000000 as internal registers on Armada 370 DB
  ARM: dts: qcom: Add idle state device nodes for 8064
  ARM: dts: qcom: Add idle states device nodes for 8084
  ARM: dts: qcom: Add idle states device nodes for 8974/8074
  ARM: dts: qcom: Update power-controller device node for 8064 Krait CPUs
  ARM: dts: qcom: Add power-controller device node for 8084 Krait CPUs
  ARM: dts: qcom: Add power-controller device node for 8074 Krait CPUs
  devicetree: bindings: Document qcom,idle-states
  devicetree: bindings: Update qcom,saw2 node bindings
  dt-bindings: Add #defines for MSM8916 clocks and resets
  arm: dts: qcom: Add LPASS Audio HW to IPQ8064 device tree
  arm: dts: qcom: Add APQ8084 chipset SPMI PMIC's nodes
  arm: dts: qcom: Add 8x74 chipset SPMI PMIC's nodes
  arm: dts: qcom: Add SPMI PMIC Arbiter nodes for APQ8084 and MSM8974
  arm: dts: qcom: Add LCC nodes
  arm: dts: qcom: Add TCSR support for MSM8960
  arm: dts: qcom: Add TCSR support for MSM8660
  arm: dts: qcom: Add TCSR support for IPQ8064
  ...
parents e6c81cce 8b036556
...@@ -22,6 +22,9 @@ Optional Properties: ...@@ -22,6 +22,9 @@ Optional Properties:
- pclkN, clkN: Pairs of parent of input clock and input clock to the - pclkN, clkN: Pairs of parent of input clock and input clock to the
devices in this power domain. Maximum of 4 pairs (N = 0 to 3) devices in this power domain. Maximum of 4 pairs (N = 0 to 3)
are supported currently. are supported currently.
- asbN: Clocks required by asynchronous bridges (ASB) present in
the power domain. These clock should be enabled during power
domain on/off operations.
- power-domains: phandle pointing to the parent power domain, for more details - power-domains: phandle pointing to the parent power domain, for more details
see Documentation/devicetree/bindings/power/power_domain.txt see Documentation/devicetree/bindings/power/power_domain.txt
......
...@@ -18,6 +18,8 @@ Main node required properties: ...@@ -18,6 +18,8 @@ Main node required properties:
"arm,arm11mp-gic" "arm,arm11mp-gic"
"brcm,brahma-b15-gic" "brcm,brahma-b15-gic"
"arm,arm1176jzf-devchip-gic" "arm,arm1176jzf-devchip-gic"
"qcom,msm-8660-qgic"
"qcom,msm-qgic2"
- interrupt-controller : Identifies the node as an interrupt controller - interrupt-controller : Identifies the node as an interrupt controller
- #interrupt-cells : Specifies the number of cells needed to encode an - #interrupt-cells : Specifies the number of cells needed to encode an
interrupt source. The type shall be a <u32> and the value shall be 3. interrupt source. The type shall be a <u32> and the value shall be 3.
......
...@@ -42,6 +42,7 @@ board. Currently known boards are: ...@@ -42,6 +42,7 @@ board. Currently known boards are:
"lacie,cloudbox" "lacie,cloudbox"
"lacie,inetspace_v2" "lacie,inetspace_v2"
"lacie,laplug" "lacie,laplug"
"lacie,nas2big"
"lacie,netspace_lite_v2" "lacie,netspace_lite_v2"
"lacie,netspace_max_v2" "lacie,netspace_max_v2"
"lacie,netspace_mini_v2" "lacie,netspace_mini_v2"
......
QCOM Idle States for cpuidle driver
ARM provides idle-state node to define the cpuidle states, as defined in [1].
cpuidle-qcom is the cpuidle driver for Qualcomm SoCs and uses these idle
states. Idle states have different enter/exit latency and residency values.
The idle states supported by the QCOM SoC are defined as -
* Standby
* Retention
* Standalone Power Collapse (Standalone PC or SPC)
* Power Collapse (PC)
Standby: Standby does a little more in addition to architectural clock gating.
When the WFI instruction is executed the ARM core would gate its internal
clocks. In addition to gating the clocks, QCOM cpus use this instruction as a
trigger to execute the SPM state machine. The SPM state machine waits for the
interrupt to trigger the core back in to active. This triggers the cache
hierarchy to enter standby states, when all cpus are idle. An interrupt brings
the SPM state machine out of its wait, the next step is to ensure that the
cache hierarchy is also out of standby, and then the cpu is allowed to resume
execution. This state is defined as a generic ARM WFI state by the ARM cpuidle
driver and is not defined in the DT. The SPM state machine should be
configured to execute this state by default and after executing every other
state below.
Retention: Retention is a low power state where the core is clock gated and
the memory and the registers associated with the core are retained. The
voltage may be reduced to the minimum value needed to keep the processor
registers active. The SPM should be configured to execute the retention
sequence and would wait for interrupt, before restoring the cpu to execution
state. Retention may have a slightly higher latency than Standby.
Standalone PC: A cpu can power down and warmboot if there is a sufficient time
between the time it enters idle and the next known wake up. SPC mode is used
to indicate a core entering a power down state without consulting any other
cpu or the system resources. This helps save power only on that core. The SPM
sequence for this idle state is programmed to power down the supply to the
core, wait for the interrupt, restore power to the core, and ensure the
system state including cache hierarchy is ready before allowing core to
resume. Applying power and resetting the core causes the core to warmboot
back into Elevation Level (EL) which trampolines the control back to the
kernel. Entering a power down state for the cpu, needs to be done by trapping
into a EL. Failing to do so, would result in a crash enforced by the warm boot
code in the EL for the SoC. On SoCs with write-back L1 cache, the cache has to
be flushed in s/w, before powering down the core.
Power Collapse: This state is similar to the SPC mode, but distinguishes
itself in that the cpu acknowledges and permits the SoC to enter deeper sleep
modes. In a hierarchical power domain SoC, this means L2 and other caches can
be flushed, system bus, clocks - lowered, and SoC main XO clock gated and
voltages reduced, provided all cpus enter this state. Since the span of low
power modes possible at this state is vast, the exit latency and the residency
of this low power mode would be considered high even though at a cpu level,
this essentially is cpu power down. The SPM in this state also may handshake
with the Resource power manager (RPM) processor in the SoC to indicate a
complete application processor subsystem shut down.
The idle-state for QCOM SoCs are distinguished by the compatible property of
the idle-states device node.
The devicetree representation of the idle state should be -
Required properties:
- compatible: Must be one of -
"qcom,idle-state-ret",
"qcom,idle-state-spc",
"qcom,idle-state-pc",
and "arm,idle-state".
Other required and optional properties are specified in [1].
Example:
idle-states {
CPU_SPC: spc {
compatible = "qcom,idle-state-spc", "arm,idle-state";
entry-latency-us = <150>;
exit-latency-us = <200>;
min-residency-us = <2000>;
};
};
[1]. Documentation/devicetree/bindings/arm/idle-states.txt
...@@ -2,22 +2,31 @@ SPM AVS Wrapper 2 (SAW2) ...@@ -2,22 +2,31 @@ SPM AVS Wrapper 2 (SAW2)
The SAW2 is a wrapper around the Subsystem Power Manager (SPM) and the The SAW2 is a wrapper around the Subsystem Power Manager (SPM) and the
Adaptive Voltage Scaling (AVS) hardware. The SPM is a programmable Adaptive Voltage Scaling (AVS) hardware. The SPM is a programmable
micro-controller that transitions a piece of hardware (like a processor or power-controller that transitions a piece of hardware (like a processor or
subsystem) into and out of low power modes via a direct connection to subsystem) into and out of low power modes via a direct connection to
the PMIC. It can also be wired up to interact with other processors in the the PMIC. It can also be wired up to interact with other processors in the
system, notifying them when a low power state is entered or exited. system, notifying them when a low power state is entered or exited.
Multiple revisions of the SAW hardware are supported using these Device Nodes.
SAW2 revisions differ in the register offset and configuration data. Also, the
same revision of the SAW in different SoCs may have different configuration
data due the the differences in hardware capabilities. Hence the SoC name, the
version of the SAW hardware in that SoC and the distinction between cpu (big
or Little) or cache, may be needed to uniquely identify the SAW register
configuration and initialization data. The compatible string is used to
indicate this parameter.
PROPERTIES PROPERTIES
- compatible: - compatible:
Usage: required Usage: required
Value type: <string> Value type: <string>
Definition: shall contain "qcom,saw2". A more specific value should be Definition: Must have
one of: "qcom,saw2"
"qcom,saw2-v1" A more specific value could be one of:
"qcom,saw2-v1.1" "qcom,apq8064-saw2-v1.1-cpu"
"qcom,saw2-v2" "qcom,msm8974-saw2-v2.1-cpu"
"qcom,saw2-v2.1" "qcom,apq8084-saw2-v2.1-cpu"
- reg: - reg:
Usage: required Usage: required
...@@ -26,10 +35,23 @@ PROPERTIES ...@@ -26,10 +35,23 @@ PROPERTIES
the register region. An optional second element specifies the register region. An optional second element specifies
the base address and size of the alias register region. the base address and size of the alias register region.
- regulator:
Usage: optional
Value type: boolean
Definition: Indicates that this SPM device acts as a regulator device
device for the core (CPU or Cache) the SPM is attached
to.
Example: Example 1:
regulator@2099000 { power-controller@2099000 {
compatible = "qcom,saw2"; compatible = "qcom,saw2";
reg = <0x02099000 0x1000>, <0x02009000 0x1000>; reg = <0x02099000 0x1000>, <0x02009000 0x1000>;
regulator;
};
Example 2:
saw0: power-controller@f9089000 {
compatible = "qcom,apq8084-saw2-v2.1-cpu", "qcom,saw2";
reg = <0xf9089000 0x1000>, <0xf9009000 0x1000>;
}; };
...@@ -22,3 +22,7 @@ Rockchip platforms device tree bindings ...@@ -22,3 +22,7 @@ Rockchip platforms device tree bindings
- compatible = "firefly,firefly-rk3288", "rockchip,rk3288"; - compatible = "firefly,firefly-rk3288", "rockchip,rk3288";
or or
- compatible = "firefly,firefly-rk3288-beta", "rockchip,rk3288"; - compatible = "firefly,firefly-rk3288-beta", "rockchip,rk3288";
- ChipSPARK PopMetal-RK3288 board:
Required root node properties:
- compatible = "chipspark,popmetal-rk3288", "rockchip,rk3288";
NVIDIA Tegra Activity Monitor
The activity monitor block collects statistics about the behaviour of other
components in the system. This information can be used to derive the rate at
which the external memory needs to be clocked in order to serve all requests
from the monitored clients.
Required properties:
- compatible: should be "nvidia,tegra<chip>-actmon"
- reg: offset and length of the register set for the device
- interrupts: standard interrupt property
- clocks: Must contain a phandle and clock specifier pair for each entry in
clock-names. See ../../clock/clock-bindings.txt for details.
- clock-names: Must include the following entries:
- actmon
- emc
- resets: Must contain an entry for each entry in reset-names. See
../../reset/reset.txt for details.
- reset-names: Must include the following entries:
- actmon
Example:
actmon@6000c800 {
compatible = "nvidia,tegra124-actmon";
reg = <0x0 0x6000c800 0x0 0x400>;
interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&tegra_car TEGRA124_CLK_ACTMON>,
<&tegra_car TEGRA124_CLK_EMC>;
clock-names = "actmon", "emc";
resets = <&tegra_car 119>;
reset-names = "actmon";
};
OMAP 3 ISP Device Tree bindings
===============================
The DT definitions can be found in include/dt-bindings/media/omap3-isp.h.
Required properties
===================
compatible : must contain "ti,omap3-isp"
reg : the two registers sets (physical address and length) for the
ISP. The first set contains the core ISP registers up to
the end of the SBL block. The second set contains the
CSI PHYs and receivers registers.
interrupts : the ISP interrupt specifier
iommus : phandle and IOMMU specifier for the IOMMU that serves the ISP
syscon : the phandle and register offset to the Complex I/O or CSI-PHY
register
ti,phy-type : 0 -- OMAP3ISP_PHY_TYPE_COMPLEX_IO (e.g. 3430)
1 -- OMAP3ISP_PHY_TYPE_CSIPHY (e.g. 3630)
#clock-cells : Must be 1 --- the ISP provides two external clocks,
cam_xclka and cam_xclkb, at indices 0 and 1,
respectively. Please find more information on common
clock bindings in ../clock/clock-bindings.txt.
Port nodes (optional)
---------------------
More documentation on these bindings is available in
video-interfaces.txt in the same directory.
reg : The interface:
0 - parallel (CCDC)
1 - CSIPHY1 -- CSI2C / CCP2B on 3630;
CSI1 -- CSIb on 3430
2 - CSIPHY2 -- CSI2A / CCP2B on 3630;
CSI2 -- CSIa on 3430
Optional properties
===================
vdd-csiphy1-supply : voltage supply of the CSI-2 PHY 1
vdd-csiphy2-supply : voltage supply of the CSI-2 PHY 2
Endpoint nodes
--------------
lane-polarities : lane polarity (required on CSI-2)
0 -- not inverted; 1 -- inverted
data-lanes : an array of data lanes from 1 to 3. The length can
be either 1 or 2. (required on CSI-2)
clock-lanes : the clock lane (from 1 to 3). (required on CSI-2)
Example
=======
isp@480bc000 {
compatible = "ti,omap3-isp";
reg = <0x480bc000 0x12fc
0x480bd800 0x0600>;
interrupts = <24>;
iommus = <&mmu_isp>;
syscon = <&scm_conf 0x2f0>;
ti,phy-type = <OMAP3ISP_PHY_TYPE_CSIPHY>;
#clock-cells = <1>;
ports {
#address-cells = <1>;
#size-cells = <0>;
};
};
QCOM Top Control and Status Register
Qualcomm devices have a set of registers that provide various control and status
functions for their peripherals. This node is intended to allow access to these
registers via syscon.
Required properties:
- compatible: Should contain:
"qcom,tcsr-ipq8064", "syscon" for IPQ8064
"qcom,tcsr-apq8064", "syscon" for APQ8064
"qcom,tcsr-msm8660", "syscon" for MSM8660
"qcom,tcsr-msm8960", "syscon" for MSM8960
"qcom,tcsr-msm8974", "syscon" for MSM8974
"qcom,tcsr-apq8084", "syscon" for APQ8084
"qcom,tcsr-msm8916", "syscon" for MSM8916
- reg: Address range for TCSR registers
Example:
tcsr: syscon@1a400000 {
compatible = "qcom,tcsr-msm8960", "syscon";
reg = <0x1a400000 0x100>;
};
TI Wilink 6/7/8 (wl12xx/wl18xx) SDIO devices
This node provides properties for controlling the wilink wireless device. The
node is expected to be specified as a child node to the SDIO controller that
connects the device to the system.
Required properties:
- compatible: should be one of the following:
* "ti,wl1271"
* "ti,wl1273"
* "ti,wl1281"
* "ti,wl1283"
* "ti,wl1801"
* "ti,wl1805"
* "ti,wl1807"
* "ti,wl1831"
* "ti,wl1835"
* "ti,wl1837"
- interrupts : specifies attributes for the out-of-band interrupt.
Optional properties:
- interrupt-parent : the phandle for the interrupt controller to which the
device interrupts are connected.
- ref-clock-frequency : ref clock frequency in Hz
- tcxo-clock-frequency : tcxo clock frequency in Hz
Note: the *-clock-frequency properties assume internal clocks. In case of external
clock, new bindings (for parsing the clock nodes) have to be added.
Example:
&mmc3 {
status = "okay";
vmmc-supply = <&wlan_en_reg>;
bus-width = <4>;
cap-power-off-card;
keep-power-in-suspend;
#address-cells = <1>;
#size-cells = <0>;
wlcore: wlcore@2 {
compatible = "ti,wl1835";
reg = <2>;
interrupt-parent = <&gpio0>;
interrupts = <19 IRQ_TYPE_LEVEL_HIGH>;
};
};
...@@ -4,7 +4,27 @@ Required properties: ...@@ -4,7 +4,27 @@ Required properties:
- compatible : should be "ti,omap2-uart" for OMAP2 controllers - compatible : should be "ti,omap2-uart" for OMAP2 controllers
- compatible : should be "ti,omap3-uart" for OMAP3 controllers - compatible : should be "ti,omap3-uart" for OMAP3 controllers
- compatible : should be "ti,omap4-uart" for OMAP4 controllers - compatible : should be "ti,omap4-uart" for OMAP4 controllers
- reg : address and length of the register space
- interrupts or interrupts-extended : Should contain the uart interrupt
specifier or both the interrupt
controller phandle and interrupt
specifier.
- ti,hwmods : Must be "uart<n>", n being the instance number (1-based) - ti,hwmods : Must be "uart<n>", n being the instance number (1-based)
Optional properties: Optional properties:
- clock-frequency : frequency of the clock input to the UART - clock-frequency : frequency of the clock input to the UART
- dmas : DMA specifier, consisting of a phandle to the DMA controller
node and a DMA channel number.
- dma-names : "rx" for receive channel, "tx" for transmit channel.
Example:
uart4: serial@49042000 {
compatible = "ti,omap3-uart";
reg = <0x49042000 0x400>;
interrupts = <80>;
dmas = <&sdma 81 &sdma 82>;
dma-names = "tx", "rx";
ti,hwmods = "uart4";
clock-frequency = <48000000>;
};
MediaTek PMIC Wrapper Driver
This document describes the binding for the MediaTek PMIC wrapper.
On MediaTek SoCs the PMIC is connected via SPI. The SPI master interface
is not directly visible to the CPU, but only through the PMIC wrapper
inside the SoC. The communication between the SoC and the PMIC can
optionally be encrypted. Also a non standard Dual IO SPI mode can be
used to increase speed.
IP Pairing
on MT8135 the pins of some SoC internal peripherals can be on the PMIC.
The signals of these pins are routed over the SPI bus using the pwrap
bridge. In the binding description below the properties needed for bridging
are marked with "IP Pairing". These are optional on SoCs which do not support
IP Pairing
Required properties in pwrap device node.
- compatible:
"mediatek,mt8135-pwrap" for MT8135 SoCs
"mediatek,mt8173-pwrap" for MT8173 SoCs
- interrupts: IRQ for pwrap in SOC
- reg-names: Must include the following entries:
"pwrap": Main registers base
"pwrap-bridge": bridge base (IP Pairing)
- reg: Must contain an entry for each entry in reg-names.
- reset-names: Must include the following entries:
"pwrap"
"pwrap-bridge" (IP Pairing)
- resets: Must contain an entry for each entry in reset-names.
- clock-names: Must include the following entries:
"spi": SPI bus clock
"wrap": Main module clock
- clocks: Must contain an entry for each entry in clock-names.
Optional properities:
- pmic: Mediatek PMIC MFD is the child device of pwrap
See the following for child node definitions:
Documentation/devicetree/bindings/mfd/mt6397.txt
Example:
pwrap: pwrap@1000f000 {
compatible = "mediatek,mt8135-pwrap";
reg = <0 0x1000f000 0 0x1000>,
<0 0x11017000 0 0x1000>;
reg-names = "pwrap", "pwrap-bridge";
interrupts = <GIC_SPI 128 IRQ_TYPE_LEVEL_HIGH>;
resets = <&infracfg MT8135_INFRA_PMIC_WRAP_RST>,
<&pericfg MT8135_PERI_PWRAP_BRIDGE_SW_RST>;
reset-names = "pwrap", "pwrap-bridge";
clocks = <&clk26m>, <&clk26m>;
clock-names = "spi", "wrap";
pmic {
compatible = "mediatek,mt6397";
};
};
...@@ -4,9 +4,9 @@ Required properties: ...@@ -4,9 +4,9 @@ Required properties:
- compatible: "ti,omap-twl4030" - compatible: "ti,omap-twl4030"
- ti,model: Name of the sound card (for example "omap3beagle") - ti,model: Name of the sound card (for example "omap3beagle")
- ti,mcbsp: phandle for the McBSP node - ti,mcbsp: phandle for the McBSP node
- ti,codec: phandle for the twl4030 audio node
Optional properties: Optional properties:
- ti,codec: phandle for the twl4030 audio node
- ti,mcbsp-voice: phandle for the McBSP node connected to the voice port of twl - ti,mcbsp-voice: phandle for the McBSP node connected to the voice port of twl
- ti, jack-det-gpio: Jack detect GPIO - ti, jack-det-gpio: Jack detect GPIO
- ti,audio-routing: List of connections between audio components. - ti,audio-routing: List of connections between audio components.
...@@ -59,5 +59,4 @@ sound { ...@@ -59,5 +59,4 @@ sound {
ti,model = "omap3beagle"; ti,model = "omap3beagle";
ti,mcbsp = <&mcbsp2>; ti,mcbsp = <&mcbsp2>;
ti,codec = <&twl_audio>;
}; };
...@@ -84,6 +84,7 @@ globalscale Globalscale Technologies, Inc. ...@@ -84,6 +84,7 @@ globalscale Globalscale Technologies, Inc.
gmt Global Mixed-mode Technology, Inc. gmt Global Mixed-mode Technology, Inc.
goodix Shenzhen Huiding Technology Co., Ltd. goodix Shenzhen Huiding Technology Co., Ltd.
google Google, Inc. google Google, Inc.
grinn Grinn
gumstix Gumstix, Inc. gumstix Gumstix, Inc.
gw Gateworks Corporation gw Gateworks Corporation
hannstar HannStar Display Corporation hannstar HannStar Display Corporation
......
...@@ -10,7 +10,9 @@ Required properties: ...@@ -10,7 +10,9 @@ Required properties:
"atmel,at91sam9g45es-lcdc" , "atmel,at91sam9g45es-lcdc" ,
"atmel,at91sam9rl-lcdc" , "atmel,at91sam9rl-lcdc" ,
"atmel,at32ap-lcdc" "atmel,at32ap-lcdc"
- reg : Should contain 1 register ranges(address and length) - reg : Should contain 1 register ranges(address and length).
Can contain an additional register range(address and length)
for fixed framebuffer memory. Useful for dedicated memories.
- interrupts : framebuffer controller interrupt - interrupts : framebuffer controller interrupt
- display: a phandle pointing to the display node - display: a phandle pointing to the display node
...@@ -38,6 +40,14 @@ Example: ...@@ -38,6 +40,14 @@ Example:
}; };
Example for fixed framebuffer memory:
fb0: fb@0x00500000 {
compatible = "atmel,at91sam9263-lcdc";
reg = <0x00700000 0x1000 0x70000000 0x200000>;
[...]
};
Atmel LCDC Display Atmel LCDC Display
----------------------------------------------------- -----------------------------------------------------
Required properties (as per of_videomode_helper): Required properties (as per of_videomode_helper):
......
...@@ -7132,6 +7132,7 @@ OMAP IMAGING SUBSYSTEM (OMAP3 ISP and OMAP4 ISS) ...@@ -7132,6 +7132,7 @@ OMAP IMAGING SUBSYSTEM (OMAP3 ISP and OMAP4 ISS)
M: Laurent Pinchart <laurent.pinchart@ideasonboard.com> M: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
L: linux-media@vger.kernel.org L: linux-media@vger.kernel.org
S: Maintained S: Maintained
F: Documentation/devicetree/bindings/media/ti,omap3isp.txt
F: drivers/media/platform/omap3isp/ F: drivers/media/platform/omap3isp/
F: drivers/staging/media/omap4iss/ F: drivers/staging/media/omap4iss/
......
ifeq ($(CONFIG_OF),y) ifeq ($(CONFIG_OF),y)
dtb-$(CONFIG_ARCH_ALPINE) += \
alpine-db.dtb
dtb-$(CONFIG_MACH_ASM9260) += \ dtb-$(CONFIG_MACH_ASM9260) += \
alphascale-asm9260-devkit.dtb alphascale-asm9260-devkit.dtb
# Keep at91 dtb files sorted alphabetically for each SoC # Keep at91 dtb files sorted alphabetically for each SoC
...@@ -42,6 +44,7 @@ dtb-$(CONFIG_SOC_SAM_V7) += \ ...@@ -42,6 +44,7 @@ dtb-$(CONFIG_SOC_SAM_V7) += \
sama5d34ek.dtb \ sama5d34ek.dtb \
sama5d35ek.dtb \ sama5d35ek.dtb \
sama5d36ek.dtb \ sama5d36ek.dtb \
at91-sama5d4_xplained.dtb \
at91-sama5d4ek.dtb at91-sama5d4ek.dtb
dtb-$(CONFIG_ARCH_ATLAS6) += \ dtb-$(CONFIG_ARCH_ATLAS6) += \
atlas6-evb.dtb atlas6-evb.dtb
...@@ -59,13 +62,15 @@ dtb-$(CONFIG_ARCH_BCM_5301X) += \ ...@@ -59,13 +62,15 @@ dtb-$(CONFIG_ARCH_BCM_5301X) += \
bcm4708-netgear-r6300-v2.dtb \ bcm4708-netgear-r6300-v2.dtb \
bcm47081-asus-rt-n18u.dtb \ bcm47081-asus-rt-n18u.dtb \
bcm47081-buffalo-wzr-600dhp2.dtb \ bcm47081-buffalo-wzr-600dhp2.dtb \
bcm47081-buffalo-wzr-900dhp.dtb bcm47081-buffalo-wzr-900dhp.dtb \
bcm4709-netgear-r8000.dtb
dtb-$(CONFIG_ARCH_BCM_63XX) += \ dtb-$(CONFIG_ARCH_BCM_63XX) += \
bcm963138dvt.dtb bcm963138dvt.dtb
dtb-$(CONFIG_ARCH_BCM_CYGNUS) += \ dtb-$(CONFIG_ARCH_BCM_CYGNUS) += \
bcm911360_entphn.dtb \ bcm911360_entphn.dtb \
bcm911360k.dtb \ bcm911360k.dtb \
bcm958300k.dtb bcm958300k.dtb \
bcm958305k.dtb
dtb-$(CONFIG_ARCH_BCM_MOBILE) += \ dtb-$(CONFIG_ARCH_BCM_MOBILE) += \
bcm28155-ap.dtb \ bcm28155-ap.dtb \
bcm21664-garnet.dtb bcm21664-garnet.dtb
...@@ -165,6 +170,7 @@ dtb-$(CONFIG_MACH_KIRKWOOD) += \ ...@@ -165,6 +170,7 @@ dtb-$(CONFIG_MACH_KIRKWOOD) += \
kirkwood-lsxhl.dtb \ kirkwood-lsxhl.dtb \
kirkwood-mplcec4.dtb \ kirkwood-mplcec4.dtb \
kirkwood-mv88f6281gtw-ge.dtb \ kirkwood-mv88f6281gtw-ge.dtb \
kirkwood-nas2big.dtb \
kirkwood-net2big.dtb \ kirkwood-net2big.dtb \
kirkwood-net5big.dtb \ kirkwood-net5big.dtb \
kirkwood-netgear_readynas_duo_v2.dtb \ kirkwood-netgear_readynas_duo_v2.dtb \
...@@ -199,6 +205,8 @@ dtb-$(CONFIG_ARCH_LPC32XX) += \ ...@@ -199,6 +205,8 @@ dtb-$(CONFIG_ARCH_LPC32XX) += \
ea3250.dtb phy3250.dtb ea3250.dtb phy3250.dtb
dtb-$(CONFIG_MACH_MESON6) += \ dtb-$(CONFIG_MACH_MESON6) += \
meson6-atv1200.dtb meson6-atv1200.dtb
dtb-$(CONFIG_MACH_MESON8) += \
meson8-minix-neo-x8.dtb
dtb-$(CONFIG_ARCH_MMP) += \ dtb-$(CONFIG_ARCH_MMP) += \
pxa168-aspenite.dtb \ pxa168-aspenite.dtb \
pxa910-dkb.dtb \ pxa910-dkb.dtb \
...@@ -386,6 +394,8 @@ dtb-$(CONFIG_ARCH_OMAP3) += \ ...@@ -386,6 +394,8 @@ dtb-$(CONFIG_ARCH_OMAP3) += \
omap3-overo-storm-tobi.dtb \ omap3-overo-storm-tobi.dtb \
omap3-overo-summit.dtb \ omap3-overo-summit.dtb \
omap3-overo-tobi.dtb \ omap3-overo-tobi.dtb \
omap3-pandora-600mhz.dtb \
omap3-pandora-1ghz.dtb \
omap3-sbc-t3517.dtb \ omap3-sbc-t3517.dtb \
omap3-sbc-t3530.dtb \ omap3-sbc-t3530.dtb \
omap3-sbc-t3730.dtb \ omap3-sbc-t3730.dtb \
...@@ -401,7 +411,8 @@ dtb-$(CONFIG_SOC_AM33XX) += \ ...@@ -401,7 +411,8 @@ dtb-$(CONFIG_SOC_AM33XX) += \
am335x-evmsk.dtb \ am335x-evmsk.dtb \
am335x-nano.dtb \ am335x-nano.dtb \
am335x-pepper.dtb \ am335x-pepper.dtb \
am335x-lxm.dtb am335x-lxm.dtb \
am335x-chiliboard.dtb
dtb-$(CONFIG_ARCH_OMAP4) += \ dtb-$(CONFIG_ARCH_OMAP4) += \
omap4-duovero-parlor.dtb \ omap4-duovero-parlor.dtb \
omap4-panda.dtb \ omap4-panda.dtb \
...@@ -577,6 +588,7 @@ dtb-$(CONFIG_ARCH_TEGRA_114_SOC) += \ ...@@ -577,6 +588,7 @@ dtb-$(CONFIG_ARCH_TEGRA_114_SOC) += \
dtb-$(CONFIG_ARCH_TEGRA_124_SOC) += \ dtb-$(CONFIG_ARCH_TEGRA_124_SOC) += \
tegra124-jetson-tk1.dtb \ tegra124-jetson-tk1.dtb \
tegra124-nyan-big.dtb \ tegra124-nyan-big.dtb \
tegra124-nyan-blaze.dtb \
tegra124-venice2.dtb tegra124-venice2.dtb
dtb-$(CONFIG_ARCH_U300) += \ dtb-$(CONFIG_ARCH_U300) += \
ste-u300.dtb ste-u300.dtb
...@@ -624,11 +636,14 @@ dtb-$(CONFIG_MACH_ARMADA_38X) += \ ...@@ -624,11 +636,14 @@ dtb-$(CONFIG_MACH_ARMADA_38X) += \
armada-388-db.dtb \ armada-388-db.dtb \
armada-388-gp.dtb \ armada-388-gp.dtb \
armada-388-rd.dtb armada-388-rd.dtb
dtb-$(CONFIG_MACH_ARMADA_39X) += \
armada-398-db.dtb
dtb-$(CONFIG_MACH_ARMADA_XP) += \ dtb-$(CONFIG_MACH_ARMADA_XP) += \
armada-xp-axpwifiap.dtb \ armada-xp-axpwifiap.dtb \
armada-xp-db.dtb \ armada-xp-db.dtb \
armada-xp-gp.dtb \ armada-xp-gp.dtb \
armada-xp-lenovo-ix4-300d.dtb \ armada-xp-lenovo-ix4-300d.dtb \
armada-xp-linksys-mamba.dtb \
armada-xp-matrix.dtb \ armada-xp-matrix.dtb \
armada-xp-netgear-rn2120.dtb \ armada-xp-netgear-rn2120.dtb \
armada-xp-openblocks-ax3-4.dtb \ armada-xp-openblocks-ax3-4.dtb \
......
/*
* Copyright 2015 Annapurna Labs Ltd.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
* version 2, as published by the Free Software Foundation.
*
* Alternatively, redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the following conditions
* are met:
*
* * Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* This program is distributed in the hope 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.
*
*/
/dts-v1/;
#include "alpine.dtsi"
/ {
model = "Annapurna Labs Alpine Dev Board";
/* no need for anything outside SOC */
};
/*
* Copyright 2015 Annapurna Labs Ltd.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
* version 2, as published by the Free Software Foundation.
*
* Alternatively, redistribution and use in source and binary forms, with or
* without modification, are permitted provided that the following conditions
* are met:
*
* * Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* This program is distributed in the hope 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 <dt-bindings/interrupt-controller/arm-gic.h>
#include "skeleton64.dtsi"
/ {
/* SOC compatibility */
compatible = "al,alpine";
/* CPU Configuration */
cpus {
#address-cells = <1>;
#size-cells = <0>;
enable-method = "al,alpine-smp";
cpu@0 {
compatible = "arm,cortex-a15";
device_type = "cpu";
reg = <0>;
clock-frequency = <0>; /* Filled by loader */
};
cpu@1 {
compatible = "arm,cortex-a15";
device_type = "cpu";
reg = <1>;
clock-frequency = <0>; /* Filled by loader */
};
cpu@2 {
compatible = "arm,cortex-a15";
device_type = "cpu";
reg = <2>;
clock-frequency = <0>; /* Filled by loader */
};
cpu@3 {
compatible = "arm,cortex-a15";
device_type = "cpu";
reg = <3>;
clock-frequency = <0>; /* Filled by loader */
};
};
soc {
#address-cells = <2>;
#size-cells = <2>;
compatible = "simple-bus";
interrupt-parent = <&gic>;
ranges;
arch-timer {
compatible = "arm,cortex-a15-timer",
"arm,armv7-timer";
interrupts =
<GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
<GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
<GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
<GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
clock-frequency = <0>; /* Filled by loader */
};
/* Interrupt Controller */
gic: gic@fb001000 {
compatible = "arm,cortex-a15-gic";
#interrupt-cells = <3>;
#size-cells = <0>;
#address-cells = <0>;
interrupt-controller;
reg = <0x0 0xfb001000 0x0 0x1000>,
<0x0 0xfb002000 0x0 0x2000>,
<0x0 0xfb004000 0x0 0x1000>,
<0x0 0xfb006000 0x0 0x2000>;
interrupts =
<GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
};
/* CPU Resume registers */
cpu-resume@fbff5ec0 {
compatible = "al,alpine-cpu-resume";
reg = <0x0 0xfbff5ec0 0x0 0x30>;
};
/* North Bridge Service Registers */
sysfabric-service@fb070000 {
compatible = "al,alpine-sysfabric-service", "syscon";
reg = <0x0 0xfb070000 0x0 0x10000>;
};
/* Performance Monitor Unit */
pmu {
compatible = "arm,cortex-a15-pmu";
interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
};
uart0:uart@fd883000 {
compatible = "ns16550a";
reg = <0x0 0xfd883000 0x0 0x1000>;
clock-frequency = <0>; /* Filled by loader */
interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
reg-shift = <2>;
reg-io-width = <4>;
};
uart1:uart@0xfd884000 {
compatible = "ns16550a";
reg = <0x0 0xfd884000 0x0 0x1000>;
clock-frequency = <0>; /* Filled by loader */
interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>;
reg-shift = <2>;
reg-io-width = <4>;
};
/* Internal PCIe Controller */
pcie-internal@0xfbc00000 {
compatible = "pci-host-ecam-generic";
device_type = "pci";
#size-cells = <2>;
#address-cells = <3>;
#interrupt-cells = <1>;
reg = <0x0 0xfbc00000 0x0 0x100000>;
interrupt-map-mask = <0xf800 0 0 7>;
/* Add legacy interrupts for SATA devices only */
interrupt-map = <0x4000 0 0 1 &gic 0 43 4>,
<0x4800 0 0 1 &gic 0 44 4>;
/* 32 bit non prefetchable memory space */
ranges = <0x02000000 0x0 0xfe000000 0x0 0xfe000000 0x0 0x1000000>;
bus-range = <0x00 0x00>;
};
};
};
/*
* Copyright (C) 2015 Jablotron s.r.o. -- http://www.jablotron.com/
* Author: Rostislav Lisovy <lisovy@jablotron.cz>
*
* 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.
*/
/dts-v1/;
#include "am335x-chilisom.dtsi"
/ {
model = "AM335x Chiliboard";
compatible = "grinn,am335x-chiliboard", "grinn,am335x-chilisom",
"ti,am33xx";
leds {
compatible = "gpio-leds";
pinctrl-names = "default";
pinctrl-0 = <&led_gpio_pins>;
led0 {
label = "led0";
gpios = <&gpio3 7 GPIO_ACTIVE_LOW>;
default-state = "keep";
linux,default-trigger = "heartbeat";
};
led1 {
label = "led1";
gpios = <&gpio3 8 GPIO_ACTIVE_LOW>;
default-state = "keep";
};
};
};
&am33xx_pinmux {
usb1_drvvbus: usb1_drvvbus {
pinctrl-single,pins = <
0x234 (PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* usb1_drvvbus.usb1_drvvbus */
>;
};
sd_pins: pinmux_sd_card {
pinctrl-single,pins = <
0xf0 (PIN_INPUT | MUX_MODE0) /* mmc0_dat0.mmc0_dat0 */
0xf4 (PIN_INPUT | MUX_MODE0) /* mmc0_dat1.mmc0_dat1 */
0xf8 (PIN_INPUT | MUX_MODE0) /* mmc0_dat2.mmc0_dat2 */
0xfc (PIN_INPUT | MUX_MODE0) /* mmc0_dat3.mmc0_dat3 */
0x100 (PIN_INPUT | MUX_MODE0) /* mmc0_clk.mmc0_clk */
0x104 (PIN_INPUT | MUX_MODE0) /* mmc0_cmd.mmc0_cmd */
0x160 (PIN_INPUT | MUX_MODE7) /* spi0_cs1.gpio0_6 */
>;
};
led_gpio_pins: led_gpio_pins {
pinctrl-single,pins = <
0x1e4 (PIN_OUTPUT | MUX_MODE7) /* emu0.gpio3_7 */
0x1e8 (PIN_OUTPUT | MUX_MODE7) /* emu1.gpio3_8 */
>;
};
};
&ldo4_reg {
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
};
/* Ethernet */
&cpsw_emac0 {
phy_id = <&davinci_mdio>, <0>;
phy-mode = "rmii";
};
&phy_sel {
rmii-clock-ext;
};
/* USB */
&usb {
status = "okay";
};
&usb_ctrl_mod {
status = "okay";
};
&usb1_phy {
status = "okay";
};
&usb1 {
pinctrl-names = "default";
pinctrl-0 = <&usb1_drvvbus>;
status = "okay";
dr_mode = "host";
};
&cppi41dma {
status = "okay";
};
/* microSD */
&mmc1 {
pinctrl-names = "default";
pinctrl-0 = <&sd_pins>;
vmmc-supply = <&ldo4_reg>;
bus-width = <0x4>;
cd-gpios = <&gpio0 6 GPIO_ACTIVE_HIGH>;
status = "okay";
};
/*
* Copyright (C) 2015 Jablotron s.r.o. -- http://www.jablotron.com/
* Author: Rostislav Lisovy <lisovy@jablotron.cz>
*
* 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.
*/
#include "am33xx.dtsi"
/ {
model = "Grinn AM335x ChiliSOM";
compatible = "grinn,am335x-chilisom", "ti,am33xx";
cpus {
cpu@0 {
cpu0-supply = <&dcdc2_reg>;
};
};
memory {
device_type = "memory";
reg = <0x80000000 0x20000000>; /* 512 MB */
};
};
&am33xx_pinmux {
pinctrl-names = "default";
i2c0_pins: pinmux_i2c0_pins {
pinctrl-single,pins = <
0x188 (PIN_INPUT_PULLUP | MUX_MODE0) /* i2c0_sda.i2c0_sda */
0x18c (PIN_INPUT_PULLUP | MUX_MODE0) /* i2c0_scl.i2c0_scl */
>;
};
uart0_pins: pinmux_uart0_pins {
pinctrl-single,pins = <
0x170 (PIN_INPUT_PULLUP | MUX_MODE0) /* uart0_rxd.uart0_rxd */
0x174 (PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* uart0_txd.uart0_txd */
>;
};
cpsw_default: cpsw_default {
pinctrl-single,pins = <
/* Slave 1 */
0x10c (PIN_INPUT_PULLDOWN | MUX_MODE1) /* mii1_crs.rmii1_crs */
0x110 (PIN_INPUT_PULLUP | MUX_MODE1) /* mii1_rxerr.rmii1_rxerr */
0x114 (PIN_OUTPUT_PULLDOWN | MUX_MODE1) /* mii1_txen.rmii1_txen */
0x124 (PIN_OUTPUT_PULLDOWN | MUX_MODE1) /* mii1_txd1.rmii1_txd1 */
0x128 (PIN_OUTPUT_PULLDOWN | MUX_MODE1) /* mii1_txd0.rmii1_txd0 */
0x13c (PIN_INPUT_PULLUP | MUX_MODE1) /* mii1_rxd1.rmii1_rxd1 */
0x140 (PIN_INPUT_PULLUP | MUX_MODE1) /* mii1_rxd0.rmii1_rxd0 */
0x144 (PIN_INPUT_PULLDOWN | MUX_MODE0) /* rmii1_ref_clk.rmii_ref_clk */
>;
};
cpsw_sleep: cpsw_sleep {
pinctrl-single,pins = <
/* Slave 1 reset value */
0x10c (PIN_INPUT_PULLDOWN | MUX_MODE7)
0x110 (PIN_INPUT_PULLDOWN | MUX_MODE7)
0x114 (PIN_INPUT_PULLDOWN | MUX_MODE7)
0x118 (PIN_INPUT_PULLDOWN | MUX_MODE7)
0x124 (PIN_INPUT_PULLDOWN | MUX_MODE7)
0x128 (PIN_INPUT_PULLDOWN | MUX_MODE7)
0x13c (PIN_INPUT_PULLDOWN | MUX_MODE7)
0x140 (PIN_INPUT_PULLDOWN | MUX_MODE7)
0x144 (PIN_INPUT_PULLDOWN | MUX_MODE7)
>;
};
davinci_mdio_default: davinci_mdio_default {
pinctrl-single,pins = <
/* mdio_data.mdio_data */
0x148 (PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0)
/* mdio_clk.mdio_clk */
0x14c (PIN_OUTPUT_PULLUP | MUX_MODE0)
>;
};
davinci_mdio_sleep: davinci_mdio_sleep {
pinctrl-single,pins = <
/* MDIO reset value */
0x148 (PIN_INPUT_PULLDOWN | MUX_MODE7)
0x14c (PIN_INPUT_PULLDOWN | MUX_MODE7)
>;
};
nandflash_pins: nandflash_pins {
pinctrl-single,pins = <
0x00 (PIN_INPUT_PULLDOWN | MUX_MODE0) /* gpmc_ad0.gpmc_ad0 */
0x04 (PIN_INPUT_PULLDOWN | MUX_MODE0) /* gpmc_ad1.gpmc_ad1 */
0x08 (PIN_INPUT_PULLDOWN | MUX_MODE0) /* gpmc_ad2.gpmc_ad2 */
0x0c (PIN_INPUT_PULLDOWN | MUX_MODE0) /* gpmc_ad3.gpmc_ad3 */
0x10 (PIN_INPUT_PULLDOWN | MUX_MODE0) /* gpmc_ad4.gpmc_ad4 */
0x14 (PIN_INPUT_PULLDOWN | MUX_MODE0) /* gpmc_ad5.gpmc_ad5 */
0x18 (PIN_INPUT_PULLDOWN | MUX_MODE0) /* gpmc_ad6.gpmc_ad6 */
0x1c (PIN_INPUT_PULLDOWN | MUX_MODE0) /* gpmc_ad7.gpmc_ad7 */
0x70 (PIN_INPUT_PULLUP | MUX_MODE0) /* gpmc_wait0.gpmc_wait0 */
0x7c (PIN_OUTPUT_PULLUP | MUX_MODE0) /* gpmc_csn0.gpmc_csn0 */
0x90 (PIN_OUTPUT_PULLUP | MUX_MODE0) /* gpmc_advn_ale.gpmc_advn_ale */
0x94 (PIN_OUTPUT_PULLUP | MUX_MODE0) /* gpmc_oen_ren.gpmc_oen_ren */
0x98 (PIN_OUTPUT_PULLUP | MUX_MODE0) /* gpmc_wen.gpmc_wen */
0x9c (PIN_OUTPUT_PULLUP | MUX_MODE0) /* gpmc_be0n_cle.gpmc_be0n_cle */
>;
};
};
&uart0 {
pinctrl-names = "default";
pinctrl-0 = <&uart0_pins>;
status = "okay";
};
&i2c0 {
pinctrl-names = "default";
pinctrl-0 = <&i2c0_pins>;
status = "okay";
clock-frequency = <400000>;
tps: tps@24 {
reg = <0x24>;
};
};
/include/ "tps65217.dtsi"
&tps {
regulators {
dcdc1_reg: regulator@0 {
regulator-name = "vdds_dpr";
regulator-always-on;
};
dcdc2_reg: regulator@1 {
/* VDD_MPU voltage limits 0.95V - 1.26V with +/-4% tolerance */
regulator-name = "vdd_mpu";
regulator-min-microvolt = <925000>;
regulator-max-microvolt = <1325000>;
regulator-boot-on;
regulator-always-on;
};
dcdc3_reg: regulator@2 {
/* VDD_CORE voltage limits 0.95V - 1.1V with +/-4% tolerance */
regulator-name = "vdd_core";
regulator-min-microvolt = <925000>;
regulator-max-microvolt = <1150000>;
regulator-boot-on;
regulator-always-on;
};
ldo1_reg: regulator@3 {
regulator-name = "vio,vrtc,vdds";
regulator-boot-on;
regulator-always-on;
};
ldo2_reg: regulator@4 {
regulator-name = "vdd_3v3aux";
regulator-boot-on;
regulator-always-on;
};
ldo3_reg: regulator@5 {
regulator-name = "vdd_1v8";
regulator-boot-on;
regulator-always-on;
};
ldo4_reg: regulator@6 {
regulator-name = "vdd_3v3d";
regulator-boot-on;
regulator-always-on;
};
};
};
/* Ethernet MAC */
&mac {
slaves = <1>;
pinctrl-names = "default", "sleep";
pinctrl-0 = <&cpsw_default>;
pinctrl-1 = <&cpsw_sleep>;
status = "okay";
};
&davinci_mdio {
pinctrl-names = "default", "sleep";
pinctrl-0 = <&davinci_mdio_default>;
pinctrl-1 = <&davinci_mdio_sleep>;
status = "okay";
};
/* NAND Flash */
&elm {
status = "okay";
};
&gpmc {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&nandflash_pins>;
ranges = <0 0 0x08000000 0x01000000>; /* CS0 0 @addr 0x08000000, size 0x01000000 */
nand@0,0 {
reg = <0 0 4>; /* CS0, offset 0, IO size 4 */
ti,nand-ecc-opt = "bch8";
ti,elm-id = <&elm>;
nand-bus-width = <8>;
gpmc,device-width = <1>;
gpmc,sync-clk-ps = <0>;
gpmc,cs-on-ns = <0>;
gpmc,cs-rd-off-ns = <44>;
gpmc,cs-wr-off-ns = <44>;
gpmc,adv-on-ns = <6>;
gpmc,adv-rd-off-ns = <34>;
gpmc,adv-wr-off-ns = <44>;
gpmc,we-on-ns = <0>;
gpmc,we-off-ns = <40>;
gpmc,oe-on-ns = <0>;
gpmc,oe-off-ns = <54>;
gpmc,access-ns = <64>;
gpmc,rd-cycle-ns = <82>;
gpmc,wr-cycle-ns = <82>;
gpmc,wait-on-read = "true";
gpmc,wait-on-write = "true";
gpmc,bus-turnaround-ns = <0>;
gpmc,cycle2cycle-delay-ns = <0>;
gpmc,clk-activation-ns = <0>;
gpmc,wait-monitoring-ns = <0>;
gpmc,wr-access-ns = <40>;
gpmc,wr-data-mux-bus-ns = <0>;
};
};
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
#include "am33xx.dtsi" #include "am33xx.dtsi"
#include <dt-bindings/pwm/pwm.h> #include <dt-bindings/pwm/pwm.h>
#include <dt-bindings/interrupt-controller/irq.h>
/ { / {
model = "TI AM335x EVM-SK"; model = "TI AM335x EVM-SK";
...@@ -647,6 +648,16 @@ &mmc2 { ...@@ -647,6 +648,16 @@ &mmc2 {
cap-power-off-card; cap-power-off-card;
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&mmc2_pins>; pinctrl-0 = <&mmc2_pins>;
#address-cells = <1>;
#size-cells = <0>;
wlcore: wlcore@2 {
compatible = "ti,wl1271";
reg = <2>;
interrupt-parent = <&gpio1>;
interrupts = <31 IRQ_TYPE_LEVEL_HIGH>; /* gpio 31 */
ref-clock-frequency = <38400000>;
};
}; };
&mcasp1 { &mcasp1 {
......
...@@ -213,7 +213,9 @@ &i2c0 { ...@@ -213,7 +213,9 @@ &i2c0 {
pinctrl-0 = <&i2c0_pins>; pinctrl-0 = <&i2c0_pins>;
gpio@20 { gpio@20 {
compatible = "mcp,mcp23017"; compatible = "microchip,mcp23017";
gpio-controller;
#gpio-cells = <2>;
reg = <0x20>; reg = <0x20>;
}; };
...@@ -222,7 +224,7 @@ tps: tps@24 { ...@@ -222,7 +224,7 @@ tps: tps@24 {
}; };
eeprom@53 { eeprom@53 {
compatible = "mcp,24c02"; compatible = "microchip,24c02";
reg = <0x53>; reg = <0x53>;
pagesize = <8>; pagesize = <8>;
}; };
...@@ -297,8 +299,8 @@ MTD partition table ...@@ -297,8 +299,8 @@ MTD partition table
| |-->0x004FFFFF-> Kernel end | |-->0x004FFFFF-> Kernel end
| |-->0x00500000-> File system start | |-->0x00500000-> File system start
| | | |
| |-->0x014FFFFF-> File system end | |-->0x01FFFFFF-> File system end
| |-->0x01500000-> User data start | |-->0x02000000-> User data start
| | | |
| |-->0x03FFFFFF-> User data end | |-->0x03FFFFFF-> User data end
| |-->0x04000000-> Data storage start | |-->0x04000000-> Data storage start
...@@ -327,12 +329,12 @@ partition@3 { ...@@ -327,12 +329,12 @@ partition@3 {
partition@4 { partition@4 {
label = "rootfs"; label = "rootfs";
reg = <0x00500000 0x01000000>; /* 16MB */ reg = <0x00500000 0x01b00000>; /* 27MB */
}; };
partition@5 { partition@5 {
label = "user"; label = "user";
reg = <0x01500000 0x02b00000>; /* 43MB */ reg = <0x02000000 0x02000000>; /* 32MB */
}; };
partition@6 { partition@6 {
...@@ -343,7 +345,7 @@ partition@6 { ...@@ -343,7 +345,7 @@ partition@6 {
}; };
&mac { &mac {
dual_emac = <1>; dual_emac;
status = "okay"; status = "okay";
}; };
...@@ -353,11 +355,13 @@ &davinci_mdio { ...@@ -353,11 +355,13 @@ &davinci_mdio {
&cpsw_emac0 { &cpsw_emac0 {
phy_id = <&davinci_mdio>, <0>; phy_id = <&davinci_mdio>, <0>;
phy-mode = "mii";
dual_emac_res_vlan = <1>; dual_emac_res_vlan = <1>;
}; };
&cpsw_emac1 { &cpsw_emac1 {
phy_id = <&davinci_mdio>, <1>; phy_id = <&davinci_mdio>, <1>;
phy-mode = "mii";
dual_emac_res_vlan = <2>; dual_emac_res_vlan = <2>;
}; };
......
...@@ -893,7 +893,7 @@ qspi: qspi@47900000 { ...@@ -893,7 +893,7 @@ qspi: qspi@47900000 {
}; };
hdq: hdq@48347000 { hdq: hdq@48347000 {
compatible = "ti,am43xx-hdq"; compatible = "ti,am4372-hdq";
reg = <0x48347000 0x1000>; reg = <0x48347000 0x1000>;
interrupts = <GIC_SPI 139 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 139 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&func_12m_clk>; clocks = <&func_12m_clk>;
......
...@@ -133,6 +133,20 @@ i2c0_pins_sleep: i2c0_pins_sleep { ...@@ -133,6 +133,20 @@ i2c0_pins_sleep: i2c0_pins_sleep {
>; >;
}; };
i2c2_pins_default: i2c2_pins_default {
pinctrl-single,pins = <
0x1e8 (PIN_INPUT | SLEWCTRL_FAST | MUX_MODE3) /* cam1_data1.i2c2_scl */
0x1ec (PIN_INPUT | SLEWCTRL_FAST | MUX_MODE3) /* cam1_data0.i2c2_sda */
>;
};
i2c2_pins_sleep: i2c2_pins_sleep {
pinctrl-single,pins = <
0x1e8 (PIN_INPUT_PULLDOWN | MUX_MODE7)
0x1ec (PIN_INPUT_PULLDOWN | MUX_MODE7)
>;
};
mmc1_pins_default: pinmux_mmc1_pins_default { mmc1_pins_default: pinmux_mmc1_pins_default {
pinctrl-single,pins = < pinctrl-single,pins = <
0x100 (PIN_INPUT | MUX_MODE0) /* mmc0_clk.mmc0_clk */ 0x100 (PIN_INPUT | MUX_MODE0) /* mmc0_clk.mmc0_clk */
...@@ -263,6 +277,14 @@ tps: tps62362@60 { ...@@ -263,6 +277,14 @@ tps: tps62362@60 {
}; };
}; };
&i2c2 {
status = "okay";
pinctrl-names = "default", "sleep";
pinctrl-0 = <&i2c2_pins_default>;
pinctrl-1 = <&i2c2_pins_sleep>;
clock-frequency = <100000>;
};
&epwmss0 { &epwmss0 {
status = "okay"; status = "okay";
}; };
......
...@@ -8,7 +8,6 @@ ...@@ -8,7 +8,6 @@
/dts-v1/; /dts-v1/;
#include "dra74x.dtsi" #include "dra74x.dtsi"
#include <dt-bindings/clk/ti-dra7-atl.h>
#include <dt-bindings/gpio/gpio.h> #include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/interrupt-controller/irq.h> #include <dt-bindings/interrupt-controller/irq.h>
...@@ -550,6 +549,14 @@ &usb1 { ...@@ -550,6 +549,14 @@ &usb1 {
pinctrl-0 = <&usb1_pins>; pinctrl-0 = <&usb1_pins>;
}; };
&omap_dwc3_1 {
extcon = <&extcon_usb1>;
};
&omap_dwc3_2 {
extcon = <&extcon_usb2>;
};
&usb2 { &usb2 {
dr_mode = "peripheral"; dr_mode = "peripheral";
}; };
......
...@@ -45,6 +45,15 @@ ...@@ -45,6 +45,15 @@
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE. * OTHER DEALINGS IN THE SOFTWARE.
*
* Note: this Device Tree assumes that the bootloader has remapped the
* internal registers to 0xf1000000 (instead of the default
* 0xd0000000). The 0xf1000000 is the default used by the recent,
* DT-capable, U-Boot bootloaders provided by Marvell. Some earlier
* boards were delivered with an older version of the bootloader that
* left internal registers mapped at 0xd0000000. If you are in this
* situation, you should either update your bootloader (preferred
* solution) or the below Device Tree should be adjusted.
*/ */
/dts-v1/; /dts-v1/;
...@@ -55,7 +64,7 @@ / { ...@@ -55,7 +64,7 @@ / {
compatible = "marvell,a370-db", "marvell,armada370", "marvell,armada-370-xp"; compatible = "marvell,a370-db", "marvell,armada370", "marvell,armada-370-xp";
chosen { chosen {
bootargs = "console=ttyS0,115200 earlyprintk"; stdout-path = "serial0:115200n8";
}; };
memory { memory {
...@@ -64,7 +73,7 @@ memory { ...@@ -64,7 +73,7 @@ memory {
}; };
soc { soc {
ranges = <MBUS_ID(0xf0, 0x01) 0 0xd0000000 0x100000 ranges = <MBUS_ID(0xf0, 0x01) 0 0xf1000000 0x100000
MBUS_ID(0x01, 0xe0) 0 0xfff00000 0x100000>; MBUS_ID(0x01, 0xe0) 0 0xfff00000 0x100000>;
internal-regs { internal-regs {
......
...@@ -51,7 +51,7 @@ / { ...@@ -51,7 +51,7 @@ / {
compatible = "globalscale,mirabox", "marvell,armada370", "marvell,armada-370-xp"; compatible = "globalscale,mirabox", "marvell,armada370", "marvell,armada-370-xp";
chosen { chosen {
bootargs = "console=ttyS0,115200 earlyprintk"; stdout-path = "serial0:115200n8";
}; };
memory { memory {
......
...@@ -53,7 +53,7 @@ / { ...@@ -53,7 +53,7 @@ / {
compatible = "netgear,readynas-102", "marvell,armada370", "marvell,armada-370-xp"; compatible = "netgear,readynas-102", "marvell,armada370", "marvell,armada-370-xp";
chosen { chosen {
bootargs = "console=ttyS0,115200 earlyprintk"; stdout-path = "serial0:115200n8";
}; };
memory { memory {
......
...@@ -53,7 +53,7 @@ / { ...@@ -53,7 +53,7 @@ / {
compatible = "netgear,readynas-104", "marvell,armada370", "marvell,armada-370-xp"; compatible = "netgear,readynas-104", "marvell,armada370", "marvell,armada-370-xp";
chosen { chosen {
bootargs = "console=ttyS0,115200 earlyprintk"; stdout-path = "serial0:115200n8";
}; };
memory { memory {
......
...@@ -64,7 +64,7 @@ / { ...@@ -64,7 +64,7 @@ / {
compatible = "marvell,a370-rd", "marvell,armada370", "marvell,armada-370-xp"; compatible = "marvell,a370-rd", "marvell,armada370", "marvell,armada-370-xp";
chosen { chosen {
bootargs = "console=ttyS0,115200 earlyprintk"; stdout-path = "serial0:115200n8";
}; };
memory { memory {
......
...@@ -67,8 +67,7 @@ / { ...@@ -67,8 +67,7 @@ / {
"marvell,armada-370-xp"; "marvell,armada-370-xp";
chosen { chosen {
bootargs = "console=ttyS0,115200 earlyprintk"; stdout-path = "serial0:115200n8";
stdout-path = &uart0;
}; };
memory { memory {
......
...@@ -59,8 +59,8 @@ / { ...@@ -59,8 +59,8 @@ / {
compatible = "marvell,armada-370-xp"; compatible = "marvell,armada-370-xp";
aliases { aliases {
eth0 = &eth0; serial0 = &uart0;
eth1 = &eth1; serial1 = &uart1;
}; };
cpus { cpus {
...@@ -73,6 +73,11 @@ cpu@0 { ...@@ -73,6 +73,11 @@ cpu@0 {
}; };
}; };
pmu {
compatible = "arm,cortex-a9-pmu";
interrupts-extended = <&mpic 3>;
};
soc { soc {
#address-cells = <2>; #address-cells = <2>;
#size-cells = <1>; #size-cells = <1>;
...@@ -223,7 +228,7 @@ mbusc: mbus-controller@20000 { ...@@ -223,7 +228,7 @@ mbusc: mbus-controller@20000 {
<0x20250 0x8>; <0x20250 0x8>;
}; };
mpic: interrupt-controller@20000 { mpic: interrupt-controller@20a00 {
compatible = "marvell,mpic"; compatible = "marvell,mpic";
#interrupt-cells = <1>; #interrupt-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
......
...@@ -129,6 +129,7 @@ L2: l2-cache { ...@@ -129,6 +129,7 @@ L2: l2-cache {
compatible = "marvell,aurora-outer-cache"; compatible = "marvell,aurora-outer-cache";
reg = <0x08000 0x1000>; reg = <0x08000 0x1000>;
cache-id-part = <0x100>; cache-id-part = <0x100>;
cache-level = <2>;
cache-unified; cache-unified;
wt-override; wt-override;
}; };
...@@ -232,7 +233,7 @@ sscg@18330 { ...@@ -232,7 +233,7 @@ sscg@18330 {
reg = <0x18330 0x4>; reg = <0x18330 0x4>;
}; };
interrupt-controller@20000 { interrupt-controller@20a00 {
reg = <0x20a00 0x1d0>, <0x21870 0x58>; reg = <0x20a00 0x1d0>, <0x21870 0x58>;
}; };
......
...@@ -55,7 +55,7 @@ / { ...@@ -55,7 +55,7 @@ / {
compatible = "marvell,a375-db", "marvell,armada375"; compatible = "marvell,a375-db", "marvell,armada375";
chosen { chosen {
bootargs = "console=ttyS0,115200 earlyprintk"; stdout-path = "serial0:115200n8";
}; };
memory { memory {
......
...@@ -60,8 +60,8 @@ aliases { ...@@ -60,8 +60,8 @@ aliases {
gpio0 = &gpio0; gpio0 = &gpio0;
gpio1 = &gpio1; gpio1 = &gpio1;
gpio2 = &gpio2; gpio2 = &gpio2;
ethernet0 = &eth0; serial0 = &uart0;
ethernet1 = &eth1; serial1 = &uart1;
}; };
clocks { clocks {
...@@ -96,6 +96,11 @@ cpu@1 { ...@@ -96,6 +96,11 @@ cpu@1 {
}; };
}; };
pmu {
compatible = "arm,cortex-a9-pmu";
interrupts-extended = <&mpic 3>;
};
soc { soc {
compatible = "marvell,armada375-mbus", "simple-bus"; compatible = "marvell,armada375-mbus", "simple-bus";
#address-cells = <2>; #address-cells = <2>;
...@@ -276,7 +281,7 @@ i2c1: i2c@11100 { ...@@ -276,7 +281,7 @@ i2c1: i2c@11100 {
status = "disabled"; status = "disabled";
}; };
serial@12000 { uart0: serial@12000 {
compatible = "snps,dw-apb-uart"; compatible = "snps,dw-apb-uart";
reg = <0x12000 0x100>; reg = <0x12000 0x100>;
reg-shift = <2>; reg-shift = <2>;
...@@ -286,7 +291,7 @@ serial@12000 { ...@@ -286,7 +291,7 @@ serial@12000 {
status = "disabled"; status = "disabled";
}; };
serial@12100 { uart1: serial@12100 {
compatible = "snps,dw-apb-uart"; compatible = "snps,dw-apb-uart";
reg = <0x12100 0x100>; reg = <0x12100 0x100>;
reg-shift = <2>; reg-shift = <2>;
...@@ -394,7 +399,7 @@ mbusc: mbus-controller@20000 { ...@@ -394,7 +399,7 @@ mbusc: mbus-controller@20000 {
reg = <0x20000 0x100>, <0x20180 0x20>; reg = <0x20000 0x100>, <0x20180 0x20>;
}; };
mpic: interrupt-controller@20000 { mpic: interrupt-controller@20a00 {
compatible = "marvell,mpic"; compatible = "marvell,mpic";
reg = <0x20a00 0x2d0>, <0x21070 0x58>; reg = <0x20a00 0x2d0>, <0x21070 0x58>;
#interrupt-cells = <1>; #interrupt-cells = <1>;
......
...@@ -49,8 +49,7 @@ / { ...@@ -49,8 +49,7 @@ / {
compatible = "marvell,a385-db-ap", "marvell,armada385", "marvell,armada38x"; compatible = "marvell,a385-db-ap", "marvell,armada385", "marvell,armada38x";
chosen { chosen {
bootargs = "console=ttyS0,115200"; stdout-path = "serial1:115200n8";
stdout-path = &uart1;
}; };
memory { memory {
...@@ -126,6 +125,13 @@ uart1: serial@12100 { ...@@ -126,6 +125,13 @@ uart1: serial@12100 {
status = "okay"; status = "okay";
}; };
pinctrl@18000 {
xhci0_vbus_pins: xhci0-vbus-pins {
marvell,pins = "mpp44";
marvell,function = "gpio";
};
};
ethernet@30000 { ethernet@30000 {
status = "okay"; status = "okay";
phy = <&phy2>; phy = <&phy2>;
...@@ -150,6 +156,24 @@ ethernet@70000 { ...@@ -150,6 +156,24 @@ ethernet@70000 {
phy = <&phy0>; phy = <&phy0>;
phy-mode = "rgmii-id"; phy-mode = "rgmii-id";
}; };
nfc: flash@d0000 {
status = "okay";
#address-cells = <1>;
#size-cells = <1>;
num-cs = <1>;
nand-ecc-strength = <4>;
nand-ecc-step-size = <512>;
marvell,nand-keep-config;
marvell,nand-enable-arbiter;
nand-on-flash-bbt;
};
usb3@f0000 {
status = "okay";
usb-phy = <&usb3_phy>;
};
}; };
pcie-controller { pcie-controller {
...@@ -175,4 +199,20 @@ pcie@3,0 { ...@@ -175,4 +199,20 @@ pcie@3,0 {
}; };
}; };
}; };
usb3_phy: usb3_phy {
compatible = "usb-nop-xceiv";
vcc-supply = <&reg_xhci0_vbus>;
};
reg_xhci0_vbus: xhci0-vbus {
compatible = "regulator-fixed";
pinctrl-names = "default";
pinctrl-0 = <&xhci0_vbus_pins>;
regulator-name = "xhci0-vbus";
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
enable-active-high;
gpio = <&gpio1 12 GPIO_ACTIVE_HIGH>;
};
}; };
...@@ -54,7 +54,7 @@ / { ...@@ -54,7 +54,7 @@ / {
"marvell,armada385", "marvell,armada380"; "marvell,armada385", "marvell,armada380";
chosen { chosen {
bootargs = "console=ttyS0,115200 earlyprintk"; stdout-path = "serial0:115200n8";
}; };
memory { memory {
...@@ -99,7 +99,7 @@ ethernet@30000 { ...@@ -99,7 +99,7 @@ ethernet@30000 {
phy-mode = "rgmii-id"; phy-mode = "rgmii-id";
}; };
usb@50000 { usb@58000 {
status = "ok"; status = "ok";
}; };
......
...@@ -48,8 +48,7 @@ / { ...@@ -48,8 +48,7 @@ / {
compatible = "marvell,a385-gp", "marvell,armada388", "marvell,armada380"; compatible = "marvell,a385-gp", "marvell,armada388", "marvell,armada380";
chosen { chosen {
bootargs = "console=ttyS0,115200"; stdout-path = "serial0:115200n8";
stdout-path = &uart0;
}; };
memory { memory {
...@@ -135,7 +134,7 @@ ethernet@30000 { ...@@ -135,7 +134,7 @@ ethernet@30000 {
}; };
/* CON4 */ /* CON4 */
usb@50000 { usb@58000 {
vcc-supply = <&reg_usb2_0_vbus>; vcc-supply = <&reg_usb2_0_vbus>;
status = "okay"; status = "okay";
}; };
......
...@@ -55,7 +55,7 @@ / { ...@@ -55,7 +55,7 @@ / {
"marvell,armada385","marvell,armada380"; "marvell,armada385","marvell,armada380";
chosen { chosen {
bootargs = "console=ttyS0,115200 earlyprintk"; stdout-path = "serial0:115200n8";
}; };
memory { memory {
...@@ -85,6 +85,16 @@ i2c@11000 { ...@@ -85,6 +85,16 @@ i2c@11000 {
clock-frequency = <100000>; clock-frequency = <100000>;
}; };
sdhci@d8000 {
pinctrl-names = "default";
pinctrl-0 = <&sdhci_pins>;
broken-cd;
no-1-8-v;
wp-inverted;
bus-width = <8>;
status = "okay";
};
serial@12000 { serial@12000 {
status = "okay"; status = "okay";
}; };
......
...@@ -59,9 +59,13 @@ / { ...@@ -59,9 +59,13 @@ / {
aliases { aliases {
gpio0 = &gpio0; gpio0 = &gpio0;
gpio1 = &gpio1; gpio1 = &gpio1;
ethernet0 = &eth0; serial0 = &uart0;
ethernet1 = &eth1; serial1 = &uart1;
ethernet2 = &eth2; };
pmu {
compatible = "arm,cortex-a9-pmu";
interrupts-extended = <&mpic 3>;
}; };
soc { soc {
...@@ -216,7 +220,7 @@ uart0: serial@12000 { ...@@ -216,7 +220,7 @@ uart0: serial@12000 {
status = "disabled"; status = "disabled";
}; };
serial@12100 { uart1: serial@12100 {
compatible = "snps,dw-apb-uart"; compatible = "snps,dw-apb-uart";
reg = <0x12100 0x100>; reg = <0x12100 0x100>;
reg-shift = <2>; reg-shift = <2>;
...@@ -368,7 +372,7 @@ mbusc: mbus-controller@20000 { ...@@ -368,7 +372,7 @@ mbusc: mbus-controller@20000 {
reg = <0x20000 0x100>, <0x20180 0x20>; reg = <0x20000 0x100>, <0x20180 0x20>;
}; };
mpic: interrupt-controller@20000 { mpic: interrupt-controller@20a00 {
compatible = "marvell,mpic"; compatible = "marvell,mpic";
reg = <0x20a00 0x2d0>, <0x21070 0x58>; reg = <0x20a00 0x2d0>, <0x21070 0x58>;
#interrupt-cells = <1>; #interrupt-cells = <1>;
...@@ -435,7 +439,7 @@ eth2: ethernet@34000 { ...@@ -435,7 +439,7 @@ eth2: ethernet@34000 {
status = "disabled"; status = "disabled";
}; };
usb@50000 { usb@58000 {
compatible = "marvell,orion-ehci"; compatible = "marvell,orion-ehci";
reg = <0x58000 0x500>; reg = <0x58000 0x500>;
interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>;
...@@ -548,8 +552,11 @@ flash@d0000 { ...@@ -548,8 +552,11 @@ flash@d0000 {
sdhci@d8000 { sdhci@d8000 {
compatible = "marvell,armada-380-sdhci"; compatible = "marvell,armada-380-sdhci";
reg = <0xd8000 0x1000>, <0xdc000 0x100>; reg-names = "sdhci", "mbus", "conf-sdio3";
interrupts = <0 25 0x4>; reg = <0xd8000 0x1000>,
<0xdc000 0x100>,
<0x18454 0x4>;
interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&gateclk 17>; clocks = <&gateclk 17>;
mrvl,clk-delay-cycles = <0x1F>; mrvl,clk-delay-cycles = <0x1F>;
status = "disabled"; status = "disabled";
......
/*
* Device Tree Include file for Marvell Armada 390 SoC.
*
* Copyright (C) 2015 Marvell
*
* Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
*
* This file is dual-licensed: you can use it either under the terms
* of the GPL or the X11 license, at your option. Note that this dual
* licensing only applies to this file, and not this project as a
* whole.
*
* a) This file is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This file 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.
*
* Or, alternatively
*
* b) Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
* files (the "Software"), to deal in the Software without
* restriction, including without limitation the rights to use
* copy, modify, merge, publish, distribute, sublicense, and/or
* sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following
* conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*/
#include "armada-39x.dtsi"
/ {
soc {
internal-regs {
pinctrl@18000 {
compatible = "marvell,mv88f6920-pinctrl";
reg = <0x18000 0x20>;
};
};
};
/*
* Device Tree Include file for Marvell Armada 398 Development Board
*
* Copyright (C) 2015 Marvell
*
* Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
*
* This file is dual-licensed: you can use it either under the terms
* of the GPL or the X11 license, at your option. Note that this dual
* licensing only applies to this file, and not this project as a
* whole.
*
* a) This file is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This file 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.
*
* Or, alternatively
*
* b) Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
* files (the "Software"), to deal in the Software without
* restriction, including without limitation the rights to use
* copy, modify, merge, publish, distribute, sublicense, and/or
* sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following
* conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*/
/dts-v1/;
#include "armada-398.dtsi"
/ {
model = "Marvell Armada 398 Development Board";
compatible = "marvell,a398-db", "marvell,armada398", "marvell,armada390";
chosen {
stdout-path = "serial0:115200n8";
};
memory {
device_type = "memory";
reg = <0x00000000 0x80000000>; /* 2 GB */
};
soc {
ranges = <MBUS_ID(0xf0, 0x01) 0 0xf1000000 0x100000
MBUS_ID(0x01, 0x1d) 0 0xfff00000 0x100000>;
internal-regs {
spi@10680 {
status = "okay";
pinctrl-0 = <&spi1_pins>;
pinctrl-names = "default";
spi-flash@0 {
#address-cells = <1>;
#size-cells = <0>;
compatible = "n25q128a13";
reg = <0>;
spi-max-frequency = <108000000>;
partition@0 {
label = "U-Boot";
reg = <0 0x400000>;
};
partition@400000 {
label = "Filesystem";
reg = <0x400000 0x1000000>;
};
};
};
i2c@11000 {
pinctrl-0 = <&i2c0_pins>;
pinctrl-names = "default";
status = "okay";
clock-frequency = <100000>;
};
serial@12000 {
pinctrl-0 = <&uart0_pins>;
pinctrl-names = "default";
status = "okay";
};
serial@12100 {
pinctrl-0 = <&uart1_pins>;
pinctrl-names = "default";
status = "okay";
};
flash@d0000 {
status = "okay";
pinctrl-0 = <&nand_pins>;
pinctrl-names = "default";
num-cs = <1>;
marvell,nand-keep-config;
marvell,nand-enable-arbiter;
nand-on-flash-bbt;
nand-ecc-strength = <8>;
nand-ecc-step-size = <512>;
partition@0 {
label = "U-Boot";
reg = <0 0x800000>;
};
partition@800000 {
label = "Linux";
reg = <0x800000 0x800000>;
};
partition@1000000 {
label = "Filesystem";
reg = <0x1000000 0x3f000000>;
};
};
};
pcie-controller {
status = "okay";
pcie@1,0 {
status = "okay";
};
pcie@2,0 {
status = "okay";
};
pcie@3,0 {
status = "okay";
};
};
};
};
/*
* Device Tree Include file for Marvell Armada 398 SoC.
*
* Copyright (C) 2015 Marvell
*
* Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
*
* This file is dual-licensed: you can use it either under the terms
* of the GPL or the X11 license, at your option. Note that this dual
* licensing only applies to this file, and not this project as a
* whole.
*
* a) This file is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This file 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.
*
* Or, alternatively
*
* b) Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
* files (the "Software"), to deal in the Software without
* restriction, including without limitation the rights to use
* copy, modify, merge, publish, distribute, sublicense, and/or
* sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following
* conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*/
#include "armada-39x.dtsi"
/ {
compatible = "marvell,armada398", "marvell,armada390";
soc {
internal-regs {
pinctrl@18000 {
compatible = "marvell,mv88f6928-pinctrl";
reg = <0x18000 0x20>;
};
};
};
};
This diff is collapsed.
...@@ -59,7 +59,7 @@ / { ...@@ -59,7 +59,7 @@ / {
compatible = "marvell,rd-axpwifiap", "marvell,armadaxp-mv78230", "marvell,armadaxp", "marvell,armada-370-xp"; compatible = "marvell,rd-axpwifiap", "marvell,armadaxp-mv78230", "marvell,armadaxp", "marvell,armada-370-xp";
chosen { chosen {
bootargs = "console=ttyS0,115200 earlyprintk"; stdout-path = "serial0:115200n8";
}; };
memory { memory {
......
...@@ -64,7 +64,7 @@ / { ...@@ -64,7 +64,7 @@ / {
compatible = "marvell,axp-db", "marvell,armadaxp-mv78460", "marvell,armadaxp", "marvell,armada-370-xp"; compatible = "marvell,axp-db", "marvell,armadaxp-mv78460", "marvell,armadaxp", "marvell,armada-370-xp";
chosen { chosen {
bootargs = "console=ttyS0,115200 earlyprintk"; stdout-path = "serial0:115200n8";
}; };
memory { memory {
......
...@@ -65,7 +65,7 @@ / { ...@@ -65,7 +65,7 @@ / {
compatible = "marvell,axp-gp", "marvell,armadaxp-mv78460", "marvell,armadaxp", "marvell,armada-370-xp"; compatible = "marvell,axp-gp", "marvell,armadaxp-mv78460", "marvell,armadaxp", "marvell,armada-370-xp";
chosen { chosen {
bootargs = "console=ttyS0,115200 earlyprintk"; stdout-path = "serial0:115200n8";
}; };
memory { memory {
......
...@@ -54,8 +54,7 @@ / { ...@@ -54,8 +54,7 @@ / {
"marvell,armadaxp", "marvell,armada-370-xp"; "marvell,armadaxp", "marvell,armada-370-xp";
chosen { chosen {
bootargs = "console=ttyS0,115200 earlyprintk"; stdout-path = "serial0:115200n8";
stdout-path = &uart0;
}; };
memory { memory {
......
/*
* Device Tree file for the Linksys WRT1900AC (Mamba).
*
* Note: this board is shipped with a new generation boot loader that
* remaps internal registers at 0xf1000000. Therefore, if earlyprintk
* is used, the CONFIG_DEBUG_MVEBU_UART0_ALTERNATE option should be
* used.
*
* Copyright (C) 2014 Imre Kaloz <kaloz@openwrt.org>
*
* Based on armada-xp-axpwifiap.dts:
*
* Copyright (C) 2013 Marvell
*
* Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
*
* This file is dual-licensed: you can use it either under the terms
* of the GPL or the X11 license, at your option. Note that this dual
* licensing only applies to this file, and not this project as a
* whole.
*
* a) This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without
* any warranty of any kind, whether express or implied.
*
* Or, alternatively,
*
* b) Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
* files (the "Software"), to deal in the Software without
* restriction, including without limitation the rights to use,
* copy, modify, merge, publish, distribute, sublicense, and/or
* sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following
* conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*/
/dts-v1/;
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include "armada-xp-mv78230.dtsi"
/ {
model = "Linksys WRT1900AC";
compatible = "linksys,mamba", "marvell,armadaxp-mv78230",
"marvell,armadaxp", "marvell,armada-370-xp";
chosen {
bootargs = "console=ttyS0,115200";
stdout-path = &uart0;
};
memory {
device_type = "memory";
reg = <0x00000000 0x00000000 0x00000000 0x10000000>; /* 256MB */
};
soc {
ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xf1000000 0x100000
MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000>;
pcie-controller {
status = "okay";
/* Etron EJ168 USB 3.0 controller */
pcie@1,0 {
/* Port 0, Lane 0 */
status = "okay";
};
/* First mini-PCIe port */
pcie@2,0 {
/* Port 0, Lane 1 */
status = "okay";
};
/* Second mini-PCIe port */
pcie@3,0 {
/* Port 0, Lane 3 */
status = "okay";
};
};
internal-regs {
/* J10: VCC, NC, RX, NC, TX, GND */
serial@12000 {
status = "okay";
};
sata@a0000 {
nr-ports = <1>;
status = "okay";
};
ethernet@70000 {
pinctrl-0 = <&ge0_rgmii_pins>;
pinctrl-names = "default";
status = "okay";
phy-mode = "rgmii-id";
fixed-link {
speed = <1000>;
full-duplex;
};
};
ethernet@74000 {
pinctrl-0 = <&ge1_rgmii_pins>;
pinctrl-names = "default";
status = "okay";
phy-mode = "rgmii-id";
fixed-link {
speed = <1000>;
full-duplex;
};
};
/* USB part of the eSATA/USB 2.0 port */
usb@50000 {
status = "okay";
};
i2c@11000 {
status = "okay";
clock-frequency = <100000>;
tmp421@4c {
compatible = "ti,tmp421";
reg = <0x4c>;
};
tlc59116@68 {
#address-cells = <1>;
#size-cells = <0>;
#gpio-cells = <2>;
compatible = "ti,tlc59116";
reg = <0x68>;
wan_amber@0 {
label = "mamba:amber:wan";
reg = <0x0>;
};
wan_white@1 {
label = "mamba:white:wan";
reg = <0x1>;
};
wlan_2g@2 {
label = "mamba:white:wlan_2g";
reg = <0x2>;
};
wlan_5g@3 {
label = "mamba:white:wlan_5g";
reg = <0x3>;
};
esata@4 {
label = "mamba:white:esata";
reg = <0x4>;
};
usb2@5 {
label = "mamba:white:usb2";
reg = <0x5>;
};
usb3_1@6 {
label = "mamba:white:usb3_1";
reg = <0x6>;
};
usb3_2@7 {
label = "mamba:white:usb3_2";
reg = <0x7>;
};
wps_white@8 {
label = "mamba:white:wps";
reg = <0x8>;
};
wps_amber@9 {
label = "mamba:amber:wps";
reg = <0x9>;
};
};
};
nand@d0000 {
status = "okay";
num-cs = <1>;
marvell,nand-keep-config;
marvell,nand-enable-arbiter;
nand-on-flash-bbt;
nand-ecc-strength = <4>;
nand-ecc-step-size = <512>;
partition@0 {
label = "u-boot";
reg = <0x0000000 0x100000>; /* 1MB */
read-only;
};
partition@100000 {
label = "u_env";
reg = <0x100000 0x40000>; /* 256KB */
};
partition@140000 {
label = "s_env";
reg = <0x140000 0x40000>; /* 256KB */
};
partition@900000 {
label = "devinfo";
reg = <0x900000 0x100000>; /* 1MB */
read-only;
};
/* kernel1 overlaps with rootfs1 by design */
partition@a00000 {
label = "kernel1";
reg = <0xa00000 0x2800000>; /* 40MB */
};
partition@d00000 {
label = "rootfs1";
reg = <0xd00000 0x2500000>; /* 37MB */
};
/* kernel2 overlaps with rootfs2 by design */
partition@3200000 {
label = "kernel2";
reg = <0x3200000 0x2800000>; /* 40MB */
};
partition@3500000 {
label = "rootfs2";
reg = <0x3500000 0x2500000>; /* 37MB */
};
/*
* 38MB, last MB is for the BBT, not writable
*/
partition@5a00000 {
label = "syscfg";
reg = <0x5a00000 0x2600000>;
};
/*
* Unused area between "s_env" and "devinfo".
* Moved here because otherwise the renumbered
* partitions would break the bootloader
* supplied bootargs
*/
partition@180000 {
label = "unused_area";
reg = <0x180000 0x780000>; /* 7.5MB */
};
};
spi0: spi@10600 {
status = "okay";
spi-flash@0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "everspin,mr25h256";
reg = <0>; /* Chip select 0 */
spi-max-frequency = <40000000>;
};
};
};
};
gpio_keys {
compatible = "gpio-keys";
#address-cells = <1>;
#size-cells = <0>;
pinctrl-0 = <&keys_pin>;
pinctrl-names = "default";
button@1 {
label = "WPS";
linux,code = <KEY_WPS_BUTTON>;
gpios = <&gpio1 0 GPIO_ACTIVE_HIGH>;
};
button@2 {
label = "Factory Reset Button";
linux,code = <KEY_RESTART>;
gpios = <&gpio1 1 GPIO_ACTIVE_HIGH>;
};
};
gpio-leds {
compatible = "gpio-leds";
pinctrl-0 = <&power_led_pin>;
pinctrl-names = "default";
power {
label = "mamba:white:power";
gpios = <&gpio1 8 GPIO_ACTIVE_HIGH>;
default-state = "on";
};
};
gpio_fan {
/* SUNON HA4010V4-0000-C99 */
compatible = "gpio-fan";
gpios = <&gpio0 24 0>;
gpio-fan,speed-map = <0 0
4500 1>;
};
dsa@0 {
compatible = "marvell,dsa";
#address-cells = <2>;
#size-cells = <0>;
dsa,ethernet = <&eth0>;
dsa,mii-bus = <&mdio>;
switch@0 {
#address-cells = <1>;
#size-cells = <0>;
reg = <0x0 0>; /* MDIO address 0, switch 0 in tree */
port@0 {
reg = <0>;
label = "lan4";
};
port@1 {
reg = <1>;
label = "lan3";
};
port@2 {
reg = <2>;
label = "lan2";
};
port@3 {
reg = <3>;
label = "lan1";
};
port@4 {
reg = <4>;
label = "internet";
};
port@5 {
reg = <5>;
label = "cpu";
};
};
};
};
&pinctrl {
keys_pin: keys-pin {
marvell,pins = "mpp32", "mpp33";
marvell,function = "gpio";
};
power_led_pin: power-led-pin {
marvell,pins = "mpp40";
marvell,function = "gpio";
};
gpio_fan_pin: gpio-fan-pin {
marvell,pins = "mpp24";
marvell,function = "gpio";
};
};
...@@ -52,7 +52,7 @@ / { ...@@ -52,7 +52,7 @@ / {
compatible = "marvell,axp-matrix", "marvell,armadaxp-mv78460", "marvell,armadaxp", "marvell,armada-370-xp"; compatible = "marvell,axp-matrix", "marvell,armadaxp-mv78460", "marvell,armadaxp", "marvell,armada-370-xp";
chosen { chosen {
bootargs = "console=ttyS0,115200 earlyprintk"; stdout-path = "serial0:115200n8";
}; };
memory { memory {
......
...@@ -57,7 +57,6 @@ aliases { ...@@ -57,7 +57,6 @@ aliases {
gpio0 = &gpio0; gpio0 = &gpio0;
gpio1 = &gpio1; gpio1 = &gpio1;
gpio2 = &gpio2; gpio2 = &gpio2;
eth3 = &eth3;
}; };
cpus { cpus {
......
...@@ -57,7 +57,6 @@ aliases { ...@@ -57,7 +57,6 @@ aliases {
gpio0 = &gpio0; gpio0 = &gpio0;
gpio1 = &gpio1; gpio1 = &gpio1;
gpio2 = &gpio2; gpio2 = &gpio2;
eth3 = &eth3;
}; };
......
...@@ -53,7 +53,7 @@ / { ...@@ -53,7 +53,7 @@ / {
compatible = "netgear,readynas-2120", "marvell,armadaxp-mv78230", "marvell,armadaxp", "marvell,armada-370-xp"; compatible = "netgear,readynas-2120", "marvell,armadaxp-mv78230", "marvell,armadaxp", "marvell,armada-370-xp";
chosen { chosen {
bootargs = "console=ttyS0,115200 earlyprintk"; stdout-path = "serial0:115200n8";
}; };
memory { memory {
......
...@@ -54,7 +54,7 @@ / { ...@@ -54,7 +54,7 @@ / {
compatible = "plathome,openblocks-ax3-4", "marvell,armadaxp-mv78260", "marvell,armadaxp", "marvell,armada-370-xp"; compatible = "plathome,openblocks-ax3-4", "marvell,armadaxp-mv78260", "marvell,armadaxp", "marvell,armada-370-xp";
chosen { chosen {
bootargs = "console=ttyS0,115200 earlyprintk"; stdout-path = "serial0:115200n8";
}; };
memory { memory {
......
...@@ -67,8 +67,7 @@ / { ...@@ -67,8 +67,7 @@ / {
"marvell,armadaxp", "marvell,armada-370-xp"; "marvell,armadaxp", "marvell,armada-370-xp";
chosen { chosen {
bootargs = "console=ttyS0,115200 earlyprintk"; stdout-path = "serial0:115200n8";
stdout-path = &uart0;
}; };
memory { memory {
......
...@@ -57,7 +57,8 @@ / { ...@@ -57,7 +57,8 @@ / {
compatible = "marvell,armadaxp", "marvell,armada-370-xp"; compatible = "marvell,armadaxp", "marvell,armada-370-xp";
aliases { aliases {
eth2 = &eth2; serial2 = &uart2;
serial3 = &uart3;
}; };
soc { soc {
...@@ -78,6 +79,7 @@ L2: l2-cache { ...@@ -78,6 +79,7 @@ L2: l2-cache {
compatible = "marvell,aurora-system-cache"; compatible = "marvell,aurora-system-cache";
reg = <0x08000 0x1000>; reg = <0x08000 0x1000>;
cache-id-part = <0x100>; cache-id-part = <0x100>;
cache-level = <2>;
cache-unified; cache-unified;
wt-override; wt-override;
}; };
...@@ -149,11 +151,11 @@ thermal@182b0 { ...@@ -149,11 +151,11 @@ thermal@182b0 {
cpuclk: clock-complex@18700 { cpuclk: clock-complex@18700 {
#clock-cells = <1>; #clock-cells = <1>;
compatible = "marvell,armada-xp-cpu-clock"; compatible = "marvell,armada-xp-cpu-clock";
reg = <0x18700 0xA0>, <0x1c054 0x10>; reg = <0x18700 0x24>, <0x1c054 0x10>;
clocks = <&coreclk 1>; clocks = <&coreclk 1>;
}; };
interrupt-controller@20000 { interrupt-controller@20a00 {
reg = <0x20a00 0x2d0>, <0x21070 0x58>; reg = <0x20a00 0x2d0>, <0x21070 0x58>;
}; };
......
...@@ -194,6 +194,11 @@ pinctrl_i2c2_pu: i2c2_pu { ...@@ -194,6 +194,11 @@ pinctrl_i2c2_pu: i2c2_pu {
<AT91_PIOA 19 AT91_PERIPH_B AT91_PINCTRL_PULL_UP>; <AT91_PIOA 19 AT91_PERIPH_B AT91_PINCTRL_PULL_UP>;
}; };
pinctrl_key_gpio: key_gpio_0 {
atmel,pins =
<AT91_PIOE 29 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
};
pinctrl_mmc0_cd: mmc0_cd { pinctrl_mmc0_cd: mmc0_cd {
atmel,pins = atmel,pins =
<AT91_PIOE 0 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>; <AT91_PIOE 0 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
...@@ -282,6 +287,9 @@ usb2: ehci@00700000 { ...@@ -282,6 +287,9 @@ usb2: ehci@00700000 {
gpio_keys { gpio_keys {
compatible = "gpio-keys"; compatible = "gpio-keys";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_key_gpio>;
bp3 { bp3 {
label = "PB_USER"; label = "PB_USER";
gpios = <&pioE 29 GPIO_ACTIVE_LOW>; gpios = <&pioE 29 GPIO_ACTIVE_LOW>;
......
/*
* at91-sama5d4_xplained.dts - Device Tree file for SAMA5D4 Xplained board
*
* Copyright (C) 2015 Atmel,
* 2015 Josh Wu <josh.wu@atmel.com>
*
* This file is dual-licensed: you can use it either under the terms
* of the GPL or the X11 license, at your option. Note that this dual
* licensing only applies to this file, and not this project as a
* whole.
*
* a) This file is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This file 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.
*
* Or, alternatively,
*
* b) Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
* files (the "Software"), to deal in the Software without
* restriction, including without limitation the rights to use,
* copy, modify, merge, publish, distribute, sublicense, and/or
* sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following
* conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*/
/dts-v1/;
#include "sama5d4.dtsi"
/ {
model = "Atmel SAMA5D4 Xplained";
compatible = "atmel,sama5d4-xplained", "atmel,sama5d4", "atmel,sama5";
chosen {
bootargs = "console=ttyS0,115200 ignore_loglevel earlyprintk";
};
memory {
reg = <0x20000000 0x20000000>;
};
clocks {
#address-cells = <1>;
#size-cells = <1>;
ranges;
main_clock: clock@0 {
compatible = "atmel,osc", "fixed-clock";
clock-frequency = <12000000>;
};
slow_xtal {
clock-frequency = <32768>;
};
main_xtal {
clock-frequency = <12000000>;
};
};
ahb {
apb {
spi0: spi@f8010000 {
cs-gpios = <&pioC 3 0>, <0>, <0>, <0>;
status = "okay";
m25p80@0 {
compatible = "atmel,at25df321a";
spi-max-frequency = <50000000>;
reg = <0>;
};
};
i2c0: i2c@f8014000 {
status = "okay";
};
macb0: ethernet@f8020000 {
phy-mode = "rmii";
status = "okay";
phy0: ethernet-phy@1 {
interrupt-parent = <&pioE>;
interrupts = <1 IRQ_TYPE_EDGE_FALLING>;
reg = <1>;
};
};
mmc1: mmc@fc000000 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_mmc1_clk_cmd_dat0 &pinctrl_mmc1_dat1_3 &pinctrl_mmc1_cd>;
status = "okay";
slot@0 {
reg = <0>;
bus-width = <4>;
cd-gpios = <&pioE 3 0>;
};
};
usart3: serial@fc00c000 {
status = "okay";
};
usart4: serial@fc010000 {
status = "okay";
};
adc0: adc@fc034000 {
atmel,adc-vref = <3300>;
status = "okay";
};
watchdog@fc068640 {
status = "okay";
};
pinctrl@fc06a000 {
board {
pinctrl_mmc1_cd: mmc1_cd {
atmel,pins =
<AT91_PIOE 3 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
};
pinctrl_usba_vbus: usba_vbus {
atmel,pins =
<AT91_PIOE 31 AT91_PERIPH_GPIO AT91_PINCTRL_DEGLITCH>;
};
pinctrl_key_gpio: key_gpio_0 {
atmel,pins =
<AT91_PIOE 8 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
};
};
};
};
usb0: gadget@00400000 {
atmel,vbus-gpio = <&pioE 31 GPIO_ACTIVE_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_usba_vbus>;
status = "okay";
};
usb1: ohci@00500000 {
num-ports = <3>;
atmel,vbus-gpio = <0
&pioE 11 GPIO_ACTIVE_HIGH
&pioE 14 GPIO_ACTIVE_HIGH
>;
status = "okay";
};
usb2: ehci@00600000 {
status = "okay";
};
nand0: nand@80000000 {
nand-bus-width = <8>;
nand-ecc-mode = "hw";
nand-on-flash-bbt;
atmel,has-pmecc;
status = "okay";
at91bootstrap@0 {
label = "at91bootstrap";
reg = <0x0 0x40000>;
};
bootloader@40000 {
label = "bootloader";
reg = <0x40000 0x80000>;
};
bootloaderenv@c0000 {
label = "bootloader env";
reg = <0xc0000 0xc0000>;
};
dtb@180000 {
label = "device tree";
reg = <0x180000 0x80000>;
};
kernel@200000 {
label = "kernel";
reg = <0x200000 0x600000>;
};
rootfs@800000 {
label = "rootfs";
reg = <0x800000 0x0f800000>;
};
};
};
gpio_keys {
compatible = "gpio-keys";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_key_gpio>;
pb_user1 {
label = "pb_user1";
gpios = <&pioE 8 GPIO_ACTIVE_HIGH>;
linux,code = <0x100>;
gpio-key,wakeup;
};
};
leds {
compatible = "gpio-leds";
status = "okay";
d8 {
label = "d8";
gpios = <&pioD 30 GPIO_ACTIVE_HIGH>;
status = "disabled";
};
d10 {
label = "d10";
gpios = <&pioE 15 GPIO_ACTIVE_LOW>;
linux,default-trigger = "heartbeat";
};
};
};
...@@ -115,6 +115,10 @@ slot@1 { ...@@ -115,6 +115,10 @@ slot@1 {
}; };
}; };
ssc0: ssc@f8008000 {
status = "okay";
};
spi0: spi@f8010000 { spi0: spi@f8010000 {
cs-gpios = <&pioC 3 0>, <0>, <0>, <0>; cs-gpios = <&pioC 3 0>, <0>, <0>, <0>;
status = "okay"; status = "okay";
...@@ -127,6 +131,13 @@ m25p80@0 { ...@@ -127,6 +131,13 @@ m25p80@0 {
i2c0: i2c@f8014000 { i2c0: i2c@f8014000 {
status = "okay"; status = "okay";
wm8904: codec@1a {
compatible = "wlf,wm8904";
reg = <0x1a>;
clocks = <&pck2>;
clock-names = "mclk";
};
}; };
macb0: ethernet@f8020000 { macb0: ethernet@f8020000 {
...@@ -171,6 +182,10 @@ pinctrl_mmc1_cd: mmc1_cd { ...@@ -171,6 +182,10 @@ pinctrl_mmc1_cd: mmc1_cd {
atmel,pins = atmel,pins =
<AT91_PIOE 6 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>; <AT91_PIOE 6 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
}; };
pinctrl_pck2_as_audio_mck: pck2_as_audio_mck {
atmel,pins =
<AT91_PIOB 10 AT91_PERIPH_B AT91_PINCTRL_NONE>;
};
pinctrl_usba_vbus: usba_vbus { pinctrl_usba_vbus: usba_vbus {
atmel,pins = atmel,pins =
<AT91_PIOE 31 AT91_PERIPH_GPIO AT91_PINCTRL_DEGLITCH>; <AT91_PIOE 31 AT91_PERIPH_GPIO AT91_PINCTRL_DEGLITCH>;
...@@ -244,8 +259,6 @@ rootfs@800000 { ...@@ -244,8 +259,6 @@ rootfs@800000 {
gpio_keys { gpio_keys {
compatible = "gpio-keys"; compatible = "gpio-keys";
#address-cells = <1>;
#size-cells = <0>;
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&pinctrl_key_gpio>; pinctrl-0 = <&pinctrl_key_gpio>;
...@@ -257,4 +270,42 @@ pb_user1 { ...@@ -257,4 +270,42 @@ pb_user1 {
gpio-key,wakeup; gpio-key,wakeup;
}; };
}; };
leds {
compatible = "gpio-leds";
status = "okay";
d8 {
label = "d8";
/* PE28, conflicts with usart4 rts pin */
gpios = <&pioE 28 GPIO_ACTIVE_LOW>;
};
d9 {
label = "d9";
gpios = <&pioE 9 GPIO_ACTIVE_HIGH>;
};
d10 {
label = "d10";
gpios = <&pioE 8 GPIO_ACTIVE_LOW>;
linux,default-trigger = "heartbeat";
};
};
sound {
compatible = "atmel,asoc-wm8904";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_pck2_as_audio_mck>;
atmel,model = "wm8904 @ SAMA5D4EK";
atmel,audio-routing =
"Headphone Jack", "HPOUTL",
"Headphone Jack", "HPOUTR",
"IN1L", "Line In Jack",
"IN1R", "Line In Jack";
atmel,ssc-controller = <&ssc0>;
atmel,audio-codec = <&wm8904>;
};
}; };
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
*/ */
#include "at91sam9x5.dtsi" #include "at91sam9x5.dtsi"
#include "at91sam9x5_isi.dtsi"
#include "at91sam9x5_usart3.dtsi" #include "at91sam9x5_usart3.dtsi"
#include "at91sam9x5_macb0.dtsi" #include "at91sam9x5_macb0.dtsi"
......
...@@ -16,10 +16,28 @@ / { ...@@ -16,10 +16,28 @@ / {
ahb { ahb {
apb { apb {
spi0: spi@f0000000 {
status = "disabled";
};
mmc1: mmc@f000c000 {
status = "disabled";
};
i2c0: i2c@f8010000 {
ov2640: camera@0x30 {
status = "okay";
};
};
macb0: ethernet@f802c000 { macb0: ethernet@f802c000 {
phy-mode = "rmii"; phy-mode = "rmii";
status = "okay"; status = "okay";
}; };
isi: isi@f8048000 {
status = "okay";
};
}; };
}; };
}; };
...@@ -912,6 +912,15 @@ pwm0: pwm@f8034000 { ...@@ -912,6 +912,15 @@ pwm0: pwm@f8034000 {
clocks = <&pwm_clk>; clocks = <&pwm_clk>;
status = "disabled"; status = "disabled";
}; };
usb1: gadget@f803c000 {
compatible = "atmel,at91sam9260-udc";
reg = <0xf803c000 0x4000>;
interrupts = <23 IRQ_TYPE_LEVEL_HIGH 2>;
clocks = <&udphs_clk>, <&udpck>;
clock-names = "pclk", "hclk";
status = "disabled";
};
}; };
nand0: nand@40000000 { nand0: nand@40000000 {
......
...@@ -108,6 +108,13 @@ pinctrl_pck0_as_audio_mck: pck0_as_audio_mck { ...@@ -108,6 +108,13 @@ pinctrl_pck0_as_audio_mck: pck0_as_audio_mck {
<AT91_PIOB 10 AT91_PERIPH_B AT91_PINCTRL_NONE>; <AT91_PIOB 10 AT91_PERIPH_B AT91_PINCTRL_NONE>;
}; };
}; };
usb1 {
pinctrl_usb1_vbus_sense: usb1_vbus_sense {
atmel,pins =
<AT91_PIOB 16 AT91_PERIPH_GPIO AT91_PINCTRL_DEGLITCH>; /* PB16 gpio usb vbus sense, no pull up and deglitch */
};
};
}; };
spi0: spi@f0000000 { spi0: spi@f0000000 {
...@@ -120,9 +127,20 @@ m25p80@0 { ...@@ -120,9 +127,20 @@ m25p80@0 {
}; };
}; };
usb1: gadget@f803c000 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_usb1_vbus_sense>;
atmel,vbus-gpio = <&pioB 16 GPIO_ACTIVE_HIGH>;
status = "okay";
};
watchdog@fffffe40 { watchdog@fffffe40 {
status = "okay"; status = "okay";
}; };
rtc@fffffeb0 {
status = "okay";
};
}; };
nand0: nand@40000000 { nand0: nand@40000000 {
......
...@@ -13,6 +13,37 @@ ...@@ -13,6 +13,37 @@
/ { / {
ahb { ahb {
apb { apb {
pinctrl@fffff400 {
isi {
pinctrl_isi_data_0_7: isi-0-data-0-7 {
atmel,pins =
<AT91_PIOC 0 AT91_PERIPH_B AT91_PINCTRL_NONE /* ISI_D0, conflicts with LCDDAT0 */
AT91_PIOC 1 AT91_PERIPH_B AT91_PINCTRL_NONE /* ISI_D1, conflicts with LCDDAT1 */
AT91_PIOC 2 AT91_PERIPH_B AT91_PINCTRL_NONE /* ISI_D2, conflicts with LCDDAT2 */
AT91_PIOC 3 AT91_PERIPH_B AT91_PINCTRL_NONE /* ISI_D3, conflicts with LCDDAT3 */
AT91_PIOC 4 AT91_PERIPH_B AT91_PINCTRL_NONE /* ISI_D4, conflicts with LCDDAT4 */
AT91_PIOC 5 AT91_PERIPH_B AT91_PINCTRL_NONE /* ISI_D5, conflicts with LCDDAT5 */
AT91_PIOC 6 AT91_PERIPH_B AT91_PINCTRL_NONE /* ISI_D6, conflicts with LCDDAT6 */
AT91_PIOC 7 AT91_PERIPH_B AT91_PINCTRL_NONE /* ISI_D7, conflicts with LCDDAT7 */
AT91_PIOC 12 AT91_PERIPH_B AT91_PINCTRL_NONE /* ISI_PCK, conflicts with LCDDAT12 */
AT91_PIOC 14 AT91_PERIPH_B AT91_PINCTRL_NONE /* ISI_HSYNC, conflicts with LCDDAT14 */
AT91_PIOC 13 AT91_PERIPH_B AT91_PINCTRL_NONE>; /* ISI_VSYNC, conflicts with LCDDAT13 */
};
pinctrl_isi_data_8_9: isi-0-data-8-9 {
atmel,pins =
<AT91_PIOC 8 AT91_PERIPH_B AT91_PINCTRL_NONE /* ISI_D8, conflicts with LCDDAT8 */
AT91_PIOC 9 AT91_PERIPH_B AT91_PINCTRL_NONE>; /* ISI_D9, conflicts with LCDDAT9 */
};
pinctrl_isi_data_10_11: isi-0-data-10-11 {
atmel,pins =
<AT91_PIOC 10 AT91_PERIPH_B AT91_PINCTRL_NONE /* ISI_D10, conflicts with LCDDAT10 */
AT91_PIOC 11 AT91_PERIPH_B AT91_PINCTRL_NONE>; /* ISI_D11, conflicts with LCDDAT11 */
};
};
};
pmc: pmc@fffffc00 { pmc: pmc@fffffc00 {
periphck { periphck {
isi_clk: isi_clk { isi_clk: isi_clk {
...@@ -21,6 +52,21 @@ isi_clk: isi_clk { ...@@ -21,6 +52,21 @@ isi_clk: isi_clk {
}; };
}; };
}; };
isi: isi@f8048000 {
compatible = "atmel,at91sam9g45-isi";
reg = <0xf8048000 0x4000>;
interrupts = <25 IRQ_TYPE_LEVEL_HIGH 5>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_isi_data_0_7>;
clocks = <&isi_clk>;
clock-names = "isi_clk";
status = "disabled";
port {
#address-cells = <1>;
#size-cells = <0>;
};
};
}; };
}; };
}; };
...@@ -42,6 +42,10 @@ pinctrl_1wire_cm: 1wire_cm-0 { ...@@ -42,6 +42,10 @@ pinctrl_1wire_cm: 1wire_cm-0 {
}; };
}; };
}; };
rtc@fffffeb0 {
status = "okay";
};
}; };
nand0: nand@40000000 { nand0: nand@40000000 {
......
...@@ -59,6 +59,16 @@ usb2: gadget@f803c000 { ...@@ -59,6 +59,16 @@ usb2: gadget@f803c000 {
status = "okay"; status = "okay";
}; };
isi: isi@f8048000 {
status = "disabled";
port {
isi_0: endpoint@0 {
remote-endpoint = <&ov2640_0>;
bus-width = <8>;
};
};
};
i2c0: i2c@f8010000 { i2c0: i2c@f8010000 {
status = "okay"; status = "okay";
...@@ -66,9 +76,47 @@ wm8731: wm8731@1a { ...@@ -66,9 +76,47 @@ wm8731: wm8731@1a {
compatible = "wm8731"; compatible = "wm8731";
reg = <0x1a>; reg = <0x1a>;
}; };
ov2640: camera@0x30 {
compatible = "ovti,ov2640";
reg = <0x30>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_pck0_as_isi_mck &pinctrl_sensor_power &pinctrl_sensor_reset>;
resetb-gpios = <&pioA 7 GPIO_ACTIVE_LOW>;
pwdn-gpios = <&pioA 13 GPIO_ACTIVE_HIGH>;
clocks = <&pck0>;
clock-names = "xvclk";
assigned-clocks = <&pck0>;
assigned-clock-rates = <25000000>;
status = "disabled";
port {
ov2640_0: endpoint {
remote-endpoint = <&isi_0>;
bus-width = <8>;
};
};
};
}; };
pinctrl@fffff400 { pinctrl@fffff400 {
camera_sensor {
pinctrl_pck0_as_isi_mck: pck0_as_isi_mck-0 {
atmel,pins =
<AT91_PIOC 15 AT91_PERIPH_C AT91_PINCTRL_NONE>; /* ISI_MCK */
};
pinctrl_sensor_power: sensor_power-0 {
atmel,pins =
<AT91_PIOA 13 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
};
pinctrl_sensor_reset: sensor_reset-0 {
atmel,pins =
<AT91_PIOA 7 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
};
};
mmc0 { mmc0 {
pinctrl_board_mmc0: mmc0-board { pinctrl_board_mmc0: mmc0-board {
atmel,pins = atmel,pins =
......
...@@ -54,6 +54,42 @@ cpu@0 { ...@@ -54,6 +54,42 @@ cpu@0 {
/include/ "bcm-cygnus-clock.dtsi" /include/ "bcm-cygnus-clock.dtsi"
pinctrl: pinctrl@0x0301d0c8 {
compatible = "brcm,cygnus-pinmux";
reg = <0x0301d0c8 0x30>,
<0x0301d24c 0x2c>;
};
gpio_crmu: gpio@03024800 {
compatible = "brcm,cygnus-crmu-gpio";
reg = <0x03024800 0x50>,
<0x03024008 0x18>;
#gpio-cells = <2>;
gpio-controller;
};
gpio_ccm: gpio@1800a000 {
compatible = "brcm,cygnus-ccm-gpio";
reg = <0x1800a000 0x50>,
<0x0301d164 0x20>;
#gpio-cells = <2>;
gpio-controller;
interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
interrupt-controller;
};
gpio_asiu: gpio@180a5000 {
compatible = "brcm,cygnus-asiu-gpio";
reg = <0x180a5000 0x668>;
#gpio-cells = <2>;
gpio-controller;
pinmux = <&pinctrl>;
interrupt-controller;
interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>;
};
amba { amba {
#address-cells = <1>; #address-cells = <1>;
#size-cells = <1>; #size-cells = <1>;
...@@ -90,6 +126,48 @@ i2c1: i2c@1800b000 { ...@@ -90,6 +126,48 @@ i2c1: i2c@1800b000 {
status = "disabled"; status = "disabled";
}; };
pcie0: pcie@18012000 {
compatible = "brcm,iproc-pcie";
reg = <0x18012000 0x1000>;
#interrupt-cells = <1>;
interrupt-map-mask = <0 0 0 0>;
interrupt-map = <0 0 0 0 &gic GIC_SPI 100 IRQ_TYPE_NONE>;
linux,pci-domain = <0>;
bus-range = <0x00 0xff>;
#address-cells = <3>;
#size-cells = <2>;
device_type = "pci";
ranges = <0x81000000 0 0 0x28000000 0 0x00010000
0x82000000 0 0x20000000 0x20000000 0 0x04000000>;
status = "disabled";
};
pcie1: pcie@18013000 {
compatible = "brcm,iproc-pcie";
reg = <0x18013000 0x1000>;
#interrupt-cells = <1>;
interrupt-map-mask = <0 0 0 0>;
interrupt-map = <0 0 0 0 &gic GIC_SPI 106 IRQ_TYPE_NONE>;
linux,pci-domain = <1>;
bus-range = <0x00 0xff>;
#address-cells = <3>;
#size-cells = <2>;
device_type = "pci";
ranges = <0x81000000 0 0 0x48000000 0 0x00010000
0x82000000 0 0x40000000 0x40000000 0 0x04000000>;
status = "disabled";
};
uart0: serial@18020000 { uart0: serial@18020000 {
compatible = "snps,dw-apb-uart"; compatible = "snps,dw-apb-uart";
reg = <0x18020000 0x100>; reg = <0x18020000 0x100>;
......
...@@ -45,13 +45,13 @@ logo { ...@@ -45,13 +45,13 @@ logo {
power0 { power0 {
label = "bcm53xx:green:power"; label = "bcm53xx:green:power";
gpios = <&chipcommon 2 GPIO_ACTIVE_LOW>; gpios = <&chipcommon 2 GPIO_ACTIVE_LOW>;
linux,default-trigger = "default-off"; linux,default-trigger = "default-on";
}; };
power1 { power1 {
label = "bcm53xx:amber:power"; label = "bcm53xx:amber:power";
gpios = <&chipcommon 3 GPIO_ACTIVE_LOW>; gpios = <&chipcommon 3 GPIO_ACTIVE_LOW>;
linux,default-trigger = "default-on"; linux,default-trigger = "default-off";
}; };
usb { usb {
......
/*
* Broadcom BCM470X / BCM5301X ARM platform code.
* DTS for Netgear R8000
*
* Copyright (C) 2015 Rafał Miłecki <zajec5@gmail.com>
*
* Licensed under the GNU/GPL. See COPYING for details.
*/
/dts-v1/;
#include "bcm4708.dtsi"
/ {
compatible = "netgear,r8000", "brcm,bcm4709", "brcm,bcm4708";
model = "Netgear R8000 (BCM4709)";
chosen {
bootargs = "console=ttyS0,115200";
};
memory {
reg = <0x00000000 0x08000000>;
};
leds {
compatible = "gpio-leds";
power0 {
label = "bcm53xx:white:power";
gpios = <&chipcommon 2 GPIO_ACTIVE_LOW>;
linux,default-trigger = "default-on";
};
power1 {
label = "bcm53xx:amber:power";
gpios = <&chipcommon 3 GPIO_ACTIVE_LOW>;
linux,default-trigger = "default-off";
};
5ghz-1 {
label = "bcm53xx:white:5ghz-1";
gpios = <&chipcommon 12 GPIO_ACTIVE_LOW>;
linux,default-trigger = "default-off";
};
2ghz {
label = "bcm53xx:white:2ghz";
gpios = <&chipcommon 13 GPIO_ACTIVE_LOW>;
linux,default-trigger = "default-off";
};
};
gpio-keys {
compatible = "gpio-keys";
#address-cells = <1>;
#size-cells = <0>;
rfkill {
label = "WiFi";
linux,code = <KEY_RFKILL>;
gpios = <&chipcommon 4 GPIO_ACTIVE_LOW>;
};
wps {
label = "WPS";
linux,code = <KEY_WPS_BUTTON>;
gpios = <&chipcommon 5 GPIO_ACTIVE_LOW>;
};
restart {
label = "Reset";
linux,code = <KEY_RESTART>;
gpios = <&chipcommon 6 GPIO_ACTIVE_LOW>;
};
};
};
...@@ -76,7 +76,7 @@ serial@40ab00 { ...@@ -76,7 +76,7 @@ serial@40ab00 {
reg-shift = <2>; reg-shift = <2>;
reg-io-width = <4>; reg-io-width = <4>;
interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>;
clock-frequency = <0x4d3f640>; clock-frequency = <81000000>;
}; };
sun_top_ctrl: syscon@404000 { sun_top_ctrl: syscon@404000 {
...@@ -96,6 +96,18 @@ hif_continuation: syscon@452000 { ...@@ -96,6 +96,18 @@ hif_continuation: syscon@452000 {
"syscon"; "syscon";
reg = <0x452000 0x100>; reg = <0x452000 0x100>;
}; };
irq0_intc: interrupt-controller@40a780 {
compatible = "brcm,bcm7120-l2-intc";
interrupt-parent = <&gic>;
#interrupt-cells = <1>;
reg = <0x40a780 0x8>;
interrupt-controller;
interrupts = <GIC_SPI 0x45 0x0>,
<GIC_SPI 0x43 0x0>;
brcm,int-map-mask = <0x25c>, <0x7000000>;
brcm,int-fwd-mask = <0x70000>;
};
}; };
smpboot { smpboot {
......
...@@ -33,6 +33,7 @@ ...@@ -33,6 +33,7 @@
/dts-v1/; /dts-v1/;
#include "bcm-cygnus.dtsi" #include "bcm-cygnus.dtsi"
#include "dt-bindings/input/input.h"
/ { / {
model = "Cygnus Enterprise Phone (BCM911360_ENTPHN)"; model = "Cygnus Enterprise Phone (BCM911360_ENTPHN)";
...@@ -50,4 +51,16 @@ chosen { ...@@ -50,4 +51,16 @@ chosen {
uart3: serial@18023000 { uart3: serial@18023000 {
status = "okay"; status = "okay";
}; };
gpio_keys {
compatible = "gpio-keys";
#address-cells = <1>;
#size-cells = <0>;
hook {
label = "HOOK";
linux,code = <KEY_O>;
gpios = <&gpio_asiu 48 0>;
};
};
}; };
...@@ -47,6 +47,14 @@ chosen { ...@@ -47,6 +47,14 @@ chosen {
bootargs = "console=ttyS0,115200"; bootargs = "console=ttyS0,115200";
}; };
pcie0: pcie@18012000 {
status = "okay";
};
pcie1: pcie@18013000 {
status = "okay";
};
uart3: serial@18023000 { uart3: serial@18023000 {
status = "okay"; status = "okay";
}; };
......
/*
* BSD LICENSE
*
* Copyright(c) 2015 Broadcom Corporation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
* * Neither the name of Broadcom Corporation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/dts-v1/;
#include "bcm-cygnus.dtsi"
/ {
model = "Cygnus Wireless Audio (BCM958305K)";
compatible = "brcm,bcm58305", "brcm,cygnus";
aliases {
serial0 = &uart3;
};
chosen {
stdout-path = &uart3;
bootargs = "console=ttyS0,115200";
};
uart3: serial@18023000 {
status = "okay";
};
};
...@@ -29,10 +29,10 @@ vmmcsd_fixed: fixedregulator@0 { ...@@ -29,10 +29,10 @@ vmmcsd_fixed: fixedregulator@0 {
&dm816x_pinmux { &dm816x_pinmux {
mcspi1_pins: pinmux_mcspi1_pins { mcspi1_pins: pinmux_mcspi1_pins {
pinctrl-single,pins = < pinctrl-single,pins = <
DM816X_IOPAD(0x0a94, PIN_INPUT | MUX_MODE0) /* SPI_SCLK */ DM816X_IOPAD(0x0a94, MUX_MODE0) /* SPI_SCLK */
DM816X_IOPAD(0x0a98, PIN_OUTPUT | MUX_MODE0) /* SPI_SCS0 */ DM816X_IOPAD(0x0a98, MUX_MODE0) /* SPI_SCS0 */
DM816X_IOPAD(0x0aa8, PIN_INPUT | MUX_MODE0) /* SPI_D0 */ DM816X_IOPAD(0x0aa8, MUX_MODE0) /* SPI_D0 */
DM816X_IOPAD(0x0aac, PIN_INPUT | MUX_MODE0) /* SPI_D1 */ DM816X_IOPAD(0x0aac, MUX_MODE0) /* SPI_D1 */
>; >;
}; };
...@@ -52,13 +52,13 @@ DM816X_IOPAD(0x0a90, MUX_MODE2) /* GP1[8] */ ...@@ -52,13 +52,13 @@ DM816X_IOPAD(0x0a90, MUX_MODE2) /* GP1[8] */
usb0_pins: pinmux_usb0_pins { usb0_pins: pinmux_usb0_pins {
pinctrl-single,pins = < pinctrl-single,pins = <
DM816X_IOPAD(0x0d00, MUX_MODE0) /* USB0_DRVVBUS */ DM816X_IOPAD(0x0d04, MUX_MODE0) /* USB0_DRVVBUS */
>; >;
}; };
usb1_pins: pinmux_usb0_pins { usb1_pins: pinmux_usb1_pins {
pinctrl-single,pins = < pinctrl-single,pins = <
DM816X_IOPAD(0x0d04, MUX_MODE0) /* USB1_DRVVBUS */ DM816X_IOPAD(0x0d08, MUX_MODE0) /* USB1_DRVVBUS */
>; >;
}; };
}; };
......
...@@ -396,6 +396,29 @@ usb0: usb@47401000 { ...@@ -396,6 +396,29 @@ usb0: usb@47401000 {
mentor,num-eps = <16>; mentor,num-eps = <16>;
mentor,ram-bits = <12>; mentor,ram-bits = <12>;
mentor,power = <500>; mentor,power = <500>;
dmas = <&cppi41dma 0 0 &cppi41dma 1 0
&cppi41dma 2 0 &cppi41dma 3 0
&cppi41dma 4 0 &cppi41dma 5 0
&cppi41dma 6 0 &cppi41dma 7 0
&cppi41dma 8 0 &cppi41dma 9 0
&cppi41dma 10 0 &cppi41dma 11 0
&cppi41dma 12 0 &cppi41dma 13 0
&cppi41dma 14 0 &cppi41dma 0 1
&cppi41dma 1 1 &cppi41dma 2 1
&cppi41dma 3 1 &cppi41dma 4 1
&cppi41dma 5 1 &cppi41dma 6 1
&cppi41dma 7 1 &cppi41dma 8 1
&cppi41dma 9 1 &cppi41dma 10 1
&cppi41dma 11 1 &cppi41dma 12 1
&cppi41dma 13 1 &cppi41dma 14 1>;
dma-names =
"rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7",
"rx8", "rx9", "rx10", "rx11", "rx12", "rx13",
"rx14", "rx15",
"tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7",
"tx8", "tx9", "tx10", "tx11", "tx12", "tx13",
"tx14", "tx15";
}; };
usb1: usb@47401800 { usb1: usb@47401800 {
...@@ -413,6 +436,43 @@ usb1: usb@47401800 { ...@@ -413,6 +436,43 @@ usb1: usb@47401800 {
mentor,num-eps = <16>; mentor,num-eps = <16>;
mentor,ram-bits = <12>; mentor,ram-bits = <12>;
mentor,power = <500>; mentor,power = <500>;
dmas = <&cppi41dma 15 0 &cppi41dma 16 0
&cppi41dma 17 0 &cppi41dma 18 0
&cppi41dma 19 0 &cppi41dma 20 0
&cppi41dma 21 0 &cppi41dma 22 0
&cppi41dma 23 0 &cppi41dma 24 0
&cppi41dma 25 0 &cppi41dma 26 0
&cppi41dma 27 0 &cppi41dma 28 0
&cppi41dma 29 0 &cppi41dma 15 1
&cppi41dma 16 1 &cppi41dma 17 1
&cppi41dma 18 1 &cppi41dma 19 1
&cppi41dma 20 1 &cppi41dma 21 1
&cppi41dma 22 1 &cppi41dma 23 1
&cppi41dma 24 1 &cppi41dma 25 1
&cppi41dma 26 1 &cppi41dma 27 1
&cppi41dma 28 1 &cppi41dma 29 1>;
dma-names =
"rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7",
"rx8", "rx9", "rx10", "rx11", "rx12", "rx13",
"rx14", "rx15",
"tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7",
"tx8", "tx9", "tx10", "tx11", "tx12", "tx13",
"tx14", "tx15";
};
cppi41dma: dma-controller@47402000 {
compatible = "ti,am3359-cppi41";
reg = <0x47400000 0x1000
0x47402000 0x1000
0x47403000 0x1000
0x47404000 0x4000>;
reg-names = "glue", "controller", "scheduler", "queuemgr";
interrupts = <17>;
interrupt-names = "glue";
#dma-cells = <2>;
#dma-channels = <30>;
#dma-requests = <256>;
}; };
}; };
......
/include/ "skeleton.dtsi" /include/ "skeleton.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/interrupt-controller/irq.h>
#define MBUS_ID(target,attributes) (((target) << 24) | ((attributes) << 16)) #define MBUS_ID(target,attributes) (((target) << 24) | ((attributes) << 16))
/ { / {
...@@ -61,7 +64,7 @@ pcie: pcie-controller { ...@@ -61,7 +64,7 @@ pcie: pcie-controller {
0x82000000 0x2 0x0 MBUS_ID(0x08, 0xe8) 0 1 0 /* Port 1.0 Mem */ 0x82000000 0x2 0x0 MBUS_ID(0x08, 0xe8) 0 1 0 /* Port 1.0 Mem */
0x81000000 0x2 0x0 MBUS_ID(0x08, 0xe0) 0 1 0>; /* Port 1.0 I/O */ 0x81000000 0x2 0x0 MBUS_ID(0x08, 0xe0) 0 1 0>; /* Port 1.0 I/O */
pcie-port@0 { pcie0: pcie-port@0 {
device_type = "pci"; device_type = "pci";
status = "disabled"; status = "disabled";
assigned-addresses = <0x82000800 0 0x40000 0 0x2000>; assigned-addresses = <0x82000800 0 0x40000 0 0x2000>;
...@@ -79,7 +82,7 @@ pcie-port@0 { ...@@ -79,7 +82,7 @@ pcie-port@0 {
interrupt-map = <0 0 0 0 &intc 16>; interrupt-map = <0 0 0 0 &intc 16>;
}; };
pcie-port@1 { pcie1: pcie-port@1 {
device_type = "pci"; device_type = "pci";
status = "disabled"; status = "disabled";
assigned-addresses = <0x82002800 0 0x80000 0 0x2000>; assigned-addresses = <0x82002800 0 0x80000 0 0x2000>;
...@@ -154,7 +157,7 @@ uart1: serial@12100 { ...@@ -154,7 +157,7 @@ uart1: serial@12100 {
uart2: serial@12200 { uart2: serial@12200 {
compatible = "ns16550a"; compatible = "ns16550a";
reg = <0x12000 0x100>; reg = <0x12200 0x100>;
reg-shift = <2>; reg-shift = <2>;
interrupts = <9>; interrupts = <9>;
clocks = <&core_clk 0>; clocks = <&core_clk 0>;
...@@ -163,7 +166,7 @@ uart2: serial@12200 { ...@@ -163,7 +166,7 @@ uart2: serial@12200 {
uart3: serial@12300 { uart3: serial@12300 {
compatible = "ns16550a"; compatible = "ns16550a";
reg = <0x12100 0x100>; reg = <0x12300 0x100>;
reg-shift = <2>; reg-shift = <2>;
interrupts = <10>; interrupts = <10>;
clocks = <&core_clk 0>; clocks = <&core_clk 0>;
...@@ -448,6 +451,11 @@ pmx_gpio_9: pmx-gpio-9 { ...@@ -448,6 +451,11 @@ pmx_gpio_9: pmx-gpio-9 {
marvell,function = "gpio"; marvell,function = "gpio";
}; };
pmx_pcie1_clkreq: pmx-pcie1-clkreq {
marvell,pins = "mpp9";
marvell,function = "pex1";
};
pmx_gpio_10: pmx-gpio-10 { pmx_gpio_10: pmx-gpio-10 {
marvell,pins = "mpp10"; marvell,pins = "mpp10";
marvell,function = "gpio"; marvell,function = "gpio";
...@@ -458,6 +466,11 @@ pmx_gpio_11: pmx-gpio-11 { ...@@ -458,6 +466,11 @@ pmx_gpio_11: pmx-gpio-11 {
marvell,function = "gpio"; marvell,function = "gpio";
}; };
pmx_pcie0_clkreq: pmx-pcie0-clkreq {
marvell,pins = "mpp11";
marvell,function = "pex0";
};
pmx_gpio_12: pmx-gpio-12 { pmx_gpio_12: pmx-gpio-12 {
marvell,pins = "mpp12"; marvell,pins = "mpp12";
marvell,function = "gpio"; marvell,function = "gpio";
...@@ -563,6 +576,18 @@ pmx_spi0_gpio: pmx-spi0-gpio { ...@@ -563,6 +576,18 @@ pmx_spi0_gpio: pmx-spi0-gpio {
marvell,function = "gpio"; marvell,function = "gpio";
}; };
pmx_spi1_4_7: pmx-spi1-4-7 {
marvell,pins = "mpp4", "mpp5",
"mpp6", "mpp7";
marvell,function = "spi1";
};
pmx_spi1_20_23: pmx-spi1-20-23 {
marvell,pins = "mpp20", "mpp21",
"mpp22", "mpp23";
marvell,function = "spi1";
};
pmx_uart1: pmx-uart1 { pmx_uart1: pmx-uart1 {
marvell,pins = "mpp_uart1"; marvell,pins = "mpp_uart1";
marvell,function = "uart1"; marvell,function = "uart1";
...@@ -582,6 +607,36 @@ pmx_nand_gpo: pmx-nand-gpo { ...@@ -582,6 +607,36 @@ pmx_nand_gpo: pmx-nand-gpo {
marvell,pins = "mpp_nand"; marvell,pins = "mpp_nand";
marvell,function = "gpo"; marvell,function = "gpo";
}; };
pmx_i2c1: pmx-i2c1 {
marvell,pins = "mpp17", "mpp19";
marvell,function = "twsi";
};
pmx_i2c2: pmx-i2c2 {
marvell,pins = "mpp_audio1";
marvell,function = "twsi";
};
pmx_ssp_i2c2: pmx-ssp-i2c2 {
marvell,pins = "mpp_audio1";
marvell,function = "ssp/twsi";
};
pmx_i2cmux_0: pmx-i2cmux-0 {
marvell,pins = "twsi";
marvell,function = "twsi-opt1";
};
pmx_i2cmux_1: pmx-i2cmux-1 {
marvell,pins = "twsi";
marvell,function = "twsi-opt2";
};
pmx_i2cmux_2: pmx-i2cmux-2 {
marvell,pins = "twsi";
marvell,function = "twsi-opt3";
};
}; };
core_clk: core-clocks@d0214 { core_clk: core-clocks@d0214 {
......
...@@ -541,6 +541,14 @@ partition@9 { ...@@ -541,6 +541,14 @@ partition@9 {
}; };
}; };
&omap_dwc3_1 {
extcon = <&extcon_usb1>;
};
&omap_dwc3_2 {
extcon = <&extcon_usb2>;
};
&usb1 { &usb1 {
dr_mode = "peripheral"; dr_mode = "peripheral";
pinctrl-names = "default"; pinctrl-names = "default";
......
...@@ -678,7 +678,6 @@ timer5: timer@48820000 { ...@@ -678,7 +678,6 @@ timer5: timer@48820000 {
reg = <0x48820000 0x80>; reg = <0x48820000 0x80>;
interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
ti,hwmods = "timer5"; ti,hwmods = "timer5";
ti,timer-dsp;
}; };
timer6: timer@48822000 { timer6: timer@48822000 {
...@@ -686,8 +685,6 @@ timer6: timer@48822000 { ...@@ -686,8 +685,6 @@ timer6: timer@48822000 {
reg = <0x48822000 0x80>; reg = <0x48822000 0x80>;
interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
ti,hwmods = "timer6"; ti,hwmods = "timer6";
ti,timer-dsp;
ti,timer-pwm;
}; };
timer7: timer@48824000 { timer7: timer@48824000 {
...@@ -695,7 +692,6 @@ timer7: timer@48824000 { ...@@ -695,7 +692,6 @@ timer7: timer@48824000 {
reg = <0x48824000 0x80>; reg = <0x48824000 0x80>;
interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
ti,hwmods = "timer7"; ti,hwmods = "timer7";
ti,timer-dsp;
}; };
timer8: timer@48826000 { timer8: timer@48826000 {
...@@ -703,8 +699,6 @@ timer8: timer@48826000 { ...@@ -703,8 +699,6 @@ timer8: timer@48826000 {
reg = <0x48826000 0x80>; reg = <0x48826000 0x80>;
interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
ti,hwmods = "timer8"; ti,hwmods = "timer8";
ti,timer-dsp;
ti,timer-pwm;
}; };
timer9: timer@4803e000 { timer9: timer@4803e000 {
...@@ -726,7 +720,6 @@ timer11: timer@48088000 { ...@@ -726,7 +720,6 @@ timer11: timer@48088000 {
reg = <0x48088000 0x80>; reg = <0x48088000 0x80>;
interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>; interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
ti,hwmods = "timer11"; ti,hwmods = "timer11";
ti,timer-pwm;
}; };
timer13: timer@48828000 { timer13: timer@48828000 {
......
...@@ -377,6 +377,14 @@ &usb2_phy2 { ...@@ -377,6 +377,14 @@ &usb2_phy2 {
phy-supply = <&ldo4_reg>; phy-supply = <&ldo4_reg>;
}; };
&omap_dwc3_1 {
extcon = <&extcon_usb1>;
};
&omap_dwc3_2 {
extcon = <&extcon_usb2>;
};
&usb1 { &usb1 {
dr_mode = "peripheral"; dr_mode = "peripheral";
pinctrl-names = "default"; pinctrl-names = "default";
......
...@@ -1493,6 +1493,14 @@ l3init_60m_fclk: l3init_60m_fclk { ...@@ -1493,6 +1493,14 @@ l3init_60m_fclk: l3init_60m_fclk {
ti,dividers = <1>, <8>; ti,dividers = <1>, <8>;
}; };
clkout2_clk: clkout2_clk {
#clock-cells = <0>;
compatible = "ti,gate-clock";
clocks = <&clkoutmux2_clk_mux>;
ti,bit-shift = <8>;
reg = <0x06b0>;
};
l3init_960m_gfclk: l3init_960m_gfclk { l3init_960m_gfclk: l3init_960m_gfclk {
#clock-cells = <0>; #clock-cells = <0>;
compatible = "ti,gate-clock"; compatible = "ti,gate-clock";
......
...@@ -94,3 +94,16 @@ lan9220@20000000 { ...@@ -94,3 +94,16 @@ lan9220@20000000 {
vdd33a-supply = <&reg_3p3v>; vdd33a-supply = <&reg_3p3v>;
}; };
}; };
&pfc {
uart1_pins: uart@e1030000 {
renesas,groups = "uart1_ctrl", "uart1_data";
renesas,function = "uart1";
};
};
&uart1 {
pinctrl-0 = <&uart1_pins>;
pinctrl-names = "default";
status = "okay";
};
...@@ -169,12 +169,18 @@ uart3: serial@e1050000 { ...@@ -169,12 +169,18 @@ uart3: serial@e1050000 {
clock-names = "sclk"; clock-names = "sclk";
}; };
pfc: pfc@e0140200 {
compatible = "renesas,pfc-emev2";
reg = <0xe0140200 0x100>;
};
gpio0: gpio@e0050000 { gpio0: gpio@e0050000 {
compatible = "renesas,em-gio"; compatible = "renesas,em-gio";
reg = <0xe0050000 0x2c>, <0xe0050040 0x20>; reg = <0xe0050000 0x2c>, <0xe0050040 0x20>;
interrupts = <0 67 IRQ_TYPE_LEVEL_HIGH>, interrupts = <0 67 IRQ_TYPE_LEVEL_HIGH>,
<0 68 IRQ_TYPE_LEVEL_HIGH>; <0 68 IRQ_TYPE_LEVEL_HIGH>;
gpio-controller; gpio-controller;
gpio-ranges = <&pfc 0 0 32>;
#gpio-cells = <2>; #gpio-cells = <2>;
ngpios = <32>; ngpios = <32>;
interrupt-controller; interrupt-controller;
...@@ -186,6 +192,7 @@ gpio1: gpio@e0050080 { ...@@ -186,6 +192,7 @@ gpio1: gpio@e0050080 {
interrupts = <0 69 IRQ_TYPE_LEVEL_HIGH>, interrupts = <0 69 IRQ_TYPE_LEVEL_HIGH>,
<0 70 IRQ_TYPE_LEVEL_HIGH>; <0 70 IRQ_TYPE_LEVEL_HIGH>;
gpio-controller; gpio-controller;
gpio-ranges = <&pfc 0 32 32>;
#gpio-cells = <2>; #gpio-cells = <2>;
ngpios = <32>; ngpios = <32>;
interrupt-controller; interrupt-controller;
...@@ -197,6 +204,7 @@ gpio2: gpio@e0050100 { ...@@ -197,6 +204,7 @@ gpio2: gpio@e0050100 {
interrupts = <0 71 IRQ_TYPE_LEVEL_HIGH>, interrupts = <0 71 IRQ_TYPE_LEVEL_HIGH>,
<0 72 IRQ_TYPE_LEVEL_HIGH>; <0 72 IRQ_TYPE_LEVEL_HIGH>;
gpio-controller; gpio-controller;
gpio-ranges = <&pfc 0 64 32>;
#gpio-cells = <2>; #gpio-cells = <2>;
ngpios = <32>; ngpios = <32>;
interrupt-controller; interrupt-controller;
...@@ -208,6 +216,7 @@ gpio3: gpio@e0050180 { ...@@ -208,6 +216,7 @@ gpio3: gpio@e0050180 {
interrupts = <0 73 IRQ_TYPE_LEVEL_HIGH>, interrupts = <0 73 IRQ_TYPE_LEVEL_HIGH>,
<0 74 IRQ_TYPE_LEVEL_HIGH>; <0 74 IRQ_TYPE_LEVEL_HIGH>;
gpio-controller; gpio-controller;
gpio-ranges = <&pfc 0 96 32>;
#gpio-cells = <2>; #gpio-cells = <2>;
ngpios = <32>; ngpios = <32>;
interrupt-controller; interrupt-controller;
...@@ -219,6 +228,7 @@ gpio4: gpio@e0050200 { ...@@ -219,6 +228,7 @@ gpio4: gpio@e0050200 {
interrupts = <0 75 IRQ_TYPE_LEVEL_HIGH>, interrupts = <0 75 IRQ_TYPE_LEVEL_HIGH>,
<0 76 IRQ_TYPE_LEVEL_HIGH>; <0 76 IRQ_TYPE_LEVEL_HIGH>;
gpio-controller; gpio-controller;
gpio-ranges = <&pfc 0 128 31>;
#gpio-cells = <2>; #gpio-cells = <2>;
ngpios = <31>; ngpios = <31>;
interrupt-controller; interrupt-controller;
......
...@@ -176,6 +176,10 @@ cmu: clock-controller@10030000 { ...@@ -176,6 +176,10 @@ cmu: clock-controller@10030000 {
compatible = "samsung,exynos3250-cmu"; compatible = "samsung,exynos3250-cmu";
reg = <0x10030000 0x20000>; reg = <0x10030000 0x20000>;
#clock-cells = <1>; #clock-cells = <1>;
assigned-clocks = <&cmu CLK_MOUT_ACLK_400_MCUISP_SUB>,
<&cmu CLK_MOUT_ACLK_266_SUB>;
assigned-clock-parents = <&cmu CLK_FIN_PLL>,
<&cmu CLK_FIN_PLL>;
}; };
cmu_dmc: clock-controller@105C0000 { cmu_dmc: clock-controller@105C0000 {
......
...@@ -75,10 +75,18 @@ link0_codec: simple-audio-card,codec { ...@@ -75,10 +75,18 @@ link0_codec: simple-audio-card,codec {
}; };
}; };
emmc_pwrseq: pwrseq {
pinctrl-0 = <&sd1_cd>;
pinctrl-names = "default";
compatible = "mmc-pwrseq-emmc";
reset-gpios = <&gpk1 2 1>;
};
mmc@12550000 { mmc@12550000 {
pinctrl-0 = <&sd4_clk &sd4_cmd &sd4_bus4 &sd4_bus8>; pinctrl-0 = <&sd4_clk &sd4_cmd &sd4_bus4 &sd4_bus8>;
pinctrl-names = "default"; pinctrl-names = "default";
vmmc-supply = <&ldo20_reg &buck8_reg>; vmmc-supply = <&ldo20_reg &buck8_reg>;
mmc-pwrseq = <&emmc_pwrseq>;
status = "okay"; status = "okay";
num-slots = <1>; num-slots = <1>;
...@@ -472,6 +480,12 @@ i2c@138E0000 { ...@@ -472,6 +480,12 @@ i2c@138E0000 {
}; };
}; };
/* RSTN signal for eMMC */
&sd1_cd {
samsung,pin-pud = <0>;
samsung,pin-drv = <0>;
};
&pinctrl_1 { &pinctrl_1 {
gpio_power_key: power_key { gpio_power_key: power_key {
samsung,pins = "gpx1-3"; samsung,pins = "gpx1-3";
......
...@@ -29,6 +29,7 @@ memory { ...@@ -29,6 +29,7 @@ memory {
chosen { chosen {
bootargs = "console=tty1"; bootargs = "console=tty1";
stdout-path = "serial3:115200n8";
}; };
gpio-keys { gpio-keys {
...@@ -183,7 +184,20 @@ ptn3460: lvds-bridge@20 { ...@@ -183,7 +184,20 @@ ptn3460: lvds-bridge@20 {
powerdown-gpios = <&gpy2 5 GPIO_ACTIVE_HIGH>; powerdown-gpios = <&gpy2 5 GPIO_ACTIVE_HIGH>;
reset-gpios = <&gpx1 5 GPIO_ACTIVE_HIGH>; reset-gpios = <&gpx1 5 GPIO_ACTIVE_HIGH>;
edid-emulation = <5>; edid-emulation = <5>;
panel = <&panel>;
ports {
port@0 {
bridge_out: endpoint {
remote-endpoint = <&panel_in>;
};
};
port@1 {
bridge_in: endpoint {
remote-endpoint = <&dp_out>;
};
};
};
}; };
}; };
...@@ -228,6 +242,20 @@ panel: panel { ...@@ -228,6 +242,20 @@ panel: panel {
compatible = "auo,b116xw03"; compatible = "auo,b116xw03";
power-supply = <&fet6>; power-supply = <&fet6>;
backlight = <&backlight>; backlight = <&backlight>;
port {
panel_in: endpoint {
remote-endpoint = <&bridge_out>;
};
};
};
mmc3_pwrseq: mmc3_pwrseq {
compatible = "mmc-pwrseq-simple";
reset-gpios = <&gpx0 2 GPIO_ACTIVE_LOW>, /* WIFI_RSTn */
<&gpx0 1 GPIO_ACTIVE_LOW>; /* WIFI_EN */
clocks = <&max77686 MAX77686_CLK_PMIC>;
clock-names = "ext_clock";
}; };
}; };
...@@ -242,7 +270,14 @@ &dp { ...@@ -242,7 +270,14 @@ &dp {
samsung,link-rate = <0x0a>; samsung,link-rate = <0x0a>;
samsung,lane-count = <2>; samsung,lane-count = <2>;
samsung,hpd-gpio = <&gpx0 7 GPIO_ACTIVE_HIGH>; samsung,hpd-gpio = <&gpx0 7 GPIO_ACTIVE_HIGH>;
bridge = <&ptn3460>;
ports {
port@0 {
dp_out: endpoint {
remote-endpoint = <&bridge_in>;
};
};
};
}; };
&ehci { &ehci {
...@@ -531,17 +566,33 @@ &mmc_3 { ...@@ -531,17 +566,33 @@ &mmc_3 {
status = "okay"; status = "okay";
num-slots = <1>; num-slots = <1>;
broken-cd; broken-cd;
cap-sdio-irq;
card-detect-delay = <200>; card-detect-delay = <200>;
samsung,dw-mshc-ciu-div = <3>; samsung,dw-mshc-ciu-div = <3>;
samsung,dw-mshc-sdr-timing = <2 3>; samsung,dw-mshc-sdr-timing = <2 3>;
samsung,dw-mshc-ddr-timing = <1 2>; samsung,dw-mshc-ddr-timing = <1 2>;
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&sd3_clk &sd3_cmd &sd3_bus4>; pinctrl-0 = <&sd3_clk &sd3_cmd &sd3_bus4 &wifi_en &wifi_rst>;
bus-width = <4>; bus-width = <4>;
cap-sd-highspeed; cap-sd-highspeed;
mmc-pwrseq = <&mmc3_pwrseq>;
}; };
&pinctrl_0 { &pinctrl_0 {
wifi_en: wifi-en {
samsung,pins = "gpx0-1";
samsung,pin-function = <1>;
samsung,pin-pud = <0>;
samsung,pin-drv = <0>;
};
wifi_rst: wifi-rst {
samsung,pins = "gpx0-2";
samsung,pin-function = <1>;
samsung,pin-pud = <0>;
samsung,pin-drv = <0>;
};
power_key_irq: power-key-irq { power_key_irq: power-key-irq {
samsung,pins = "gpx1-3"; samsung,pins = "gpx1-3";
samsung,pin-function = <0xf>; samsung,pin-function = <0xf>;
......
...@@ -25,6 +25,7 @@ memory { ...@@ -25,6 +25,7 @@ memory {
chosen { chosen {
bootargs = "console=tty1"; bootargs = "console=tty1";
stdout-path = "serial3:115200n8";
}; };
gpio-keys { gpio-keys {
......
...@@ -143,7 +143,7 @@ mct@101C0000 { ...@@ -143,7 +143,7 @@ mct@101C0000 {
compatible = "samsung,exynos4210-mct"; compatible = "samsung,exynos4210-mct";
reg = <0x101C0000 0x800>; reg = <0x101C0000 0x800>;
interrupt-controller; interrupt-controller;
#interrups-cells = <2>; #interrupt-cells = <2>;
interrupt-parent = <&mct_map>; interrupt-parent = <&mct_map>;
interrupts = <0 0>, <1 0>, <2 0>, <3 0>, interrupts = <0 0>, <1 0>, <2 0>, <3 0>,
<4 0>, <5 0>; <4 0>, <5 0>;
......
...@@ -55,7 +55,7 @@ mmc@12200000 { ...@@ -55,7 +55,7 @@ mmc@12200000 {
samsung,dw-mshc-sdr-timing = <0 4>; samsung,dw-mshc-sdr-timing = <0 4>;
samsung,dw-mshc-ddr-timing = <0 2>; samsung,dw-mshc-ddr-timing = <0 2>;
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus4 &sd0_bus8>; pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus1 &sd0_bus4 &sd0_bus8>;
vmmc-supply = <&ldo10_reg>; vmmc-supply = <&ldo10_reg>;
bus-width = <8>; bus-width = <8>;
cap-mmc-highspeed; cap-mmc-highspeed;
...@@ -68,7 +68,7 @@ mmc@12220000 { ...@@ -68,7 +68,7 @@ mmc@12220000 {
samsung,dw-mshc-sdr-timing = <2 3>; samsung,dw-mshc-sdr-timing = <2 3>;
samsung,dw-mshc-ddr-timing = <1 2>; samsung,dw-mshc-ddr-timing = <1 2>;
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus4>; pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus1 &sd2_bus4>;
vmmc-supply = <&ldo19_reg>; vmmc-supply = <&ldo19_reg>;
vqmmc-supply = <&ldo13_reg>; vqmmc-supply = <&ldo13_reg>;
bus-width = <4>; bus-width = <4>;
......
...@@ -43,6 +43,10 @@ backlight: backlight { ...@@ -43,6 +43,10 @@ backlight: backlight {
pinctrl-names = "default"; pinctrl-names = "default";
}; };
chosen {
stdout-path = "serial3:115200n8";
};
fixed-rate-clocks { fixed-rate-clocks {
oscclk { oscclk {
compatible = "samsung,exynos5420-oscclk"; compatible = "samsung,exynos5420-oscclk";
...@@ -118,6 +122,19 @@ panel: panel { ...@@ -118,6 +122,19 @@ panel: panel {
compatible = "auo,b116xw03"; compatible = "auo,b116xw03";
power-supply = <&tps65090_fet6>; power-supply = <&tps65090_fet6>;
backlight = <&backlight>; backlight = <&backlight>;
port {
panel_in: endpoint {
remote-endpoint = <&bridge_out>;
};
};
};
mmc1_pwrseq: mmc1_pwrseq {
compatible = "mmc-pwrseq-simple";
reset-gpios = <&gpx0 0 GPIO_ACTIVE_LOW>; /* WIFI_EN */
clocks = <&max77802 MAX77802_CLK_32K_CP>;
clock-names = "ext_clock";
}; };
}; };
...@@ -137,7 +154,14 @@ &dp { ...@@ -137,7 +154,14 @@ &dp {
samsung,link-rate = <0x06>; samsung,link-rate = <0x06>;
samsung,lane-count = <2>; samsung,lane-count = <2>;
samsung,hpd-gpio = <&gpx2 6 0>; samsung,hpd-gpio = <&gpx2 6 0>;
bridge = <&ps8625>;
ports {
port@0 {
dp_out: endpoint {
remote-endpoint = <&bridge_in>;
};
};
};
}; };
&fimd { &fimd {
...@@ -581,6 +605,8 @@ max98090: codec@10 { ...@@ -581,6 +605,8 @@ max98090: codec@10 {
interrupt-parent = <&gpx0>; interrupt-parent = <&gpx0>;
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&max98090_irq>; pinctrl-0 = <&max98090_irq>;
clocks = <&pmu_system_controller 0>;
clock-names = "mclk";
}; };
light-sensor@44 { light-sensor@44 {
...@@ -595,8 +621,22 @@ ps8625: lvds-bridge@48 { ...@@ -595,8 +621,22 @@ ps8625: lvds-bridge@48 {
sleep-gpios = <&gpx3 5 GPIO_ACTIVE_HIGH>; sleep-gpios = <&gpx3 5 GPIO_ACTIVE_HIGH>;
reset-gpios = <&gpy7 7 GPIO_ACTIVE_HIGH>; reset-gpios = <&gpy7 7 GPIO_ACTIVE_HIGH>;
lane-count = <2>; lane-count = <2>;
panel = <&panel>;
use-external-pwm; use-external-pwm;
ports {
port@0 {
bridge_out: endpoint {
remote-endpoint = <&panel_in>;
};
};
port@1 {
bridge_in: endpoint {
remote-endpoint = <&dp_out>;
};
};
};
}; };
}; };
...@@ -659,11 +699,32 @@ &mmc_0 { ...@@ -659,11 +699,32 @@ &mmc_0 {
samsung,dw-mshc-ciu-div = <3>; samsung,dw-mshc-ciu-div = <3>;
samsung,dw-mshc-sdr-timing = <0 4>; samsung,dw-mshc-sdr-timing = <0 4>;
samsung,dw-mshc-ddr-timing = <0 2>; samsung,dw-mshc-ddr-timing = <0 2>;
samsung,dw-mshc-hs400-timing = <0 2>;
samsung,read-strobe-delay = <90>;
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus4 &sd0_bus8>; pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus1 &sd0_bus4 &sd0_bus8 &sd0_rclk>;
bus-width = <8>; bus-width = <8>;
}; };
&mmc_1 {
status = "okay";
num-slots = <1>;
broken-cd;
cap-sdio-irq;
card-detect-delay = <200>;
clock-frequency = <400000000>;
samsung,dw-mshc-ciu-div = <1>;
samsung,dw-mshc-sdr-timing = <0 1>;
samsung,dw-mshc-ddr-timing = <0 2>;
pinctrl-names = "default";
pinctrl-0 = <&sd1_clk>, <&sd1_cmd>, <&sd1_int>, <&sd1_bus1>,
<&sd1_bus4>, <&sd1_bus8>, <&wifi_en>;
bus-width = <4>;
cap-sd-highspeed;
mmc-pwrseq = <&mmc1_pwrseq>;
vqmmc-supply = <&buck10_reg>;
};
&mmc_2 { &mmc_2 {
status = "okay"; status = "okay";
num-slots = <1>; num-slots = <1>;
...@@ -674,7 +735,7 @@ &mmc_2 { ...@@ -674,7 +735,7 @@ &mmc_2 {
samsung,dw-mshc-sdr-timing = <2 3>; samsung,dw-mshc-sdr-timing = <2 3>;
samsung,dw-mshc-ddr-timing = <1 2>; samsung,dw-mshc-ddr-timing = <1 2>;
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus4>; pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus1 &sd2_bus4>;
bus-width = <4>; bus-width = <4>;
}; };
...@@ -683,6 +744,13 @@ &pinctrl_0 { ...@@ -683,6 +744,13 @@ &pinctrl_0 {
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&mask_tpm_reset>; pinctrl-0 = <&mask_tpm_reset>;
wifi_en: wifi-en {
samsung,pins = "gpx0-0";
samsung,pin-function = <1>;
samsung,pin-pud = <0>;
samsung,pin-drv = <0>;
};
max98090_irq: max98090-irq { max98090_irq: max98090-irq {
samsung,pins = "gpx0-2"; samsung,pins = "gpx0-2";
samsung,pin-function = <0>; samsung,pin-function = <0>;
...@@ -770,6 +838,29 @@ pmic_dvs_1: pmic-dvs-1 { ...@@ -770,6 +838,29 @@ pmic_dvs_1: pmic-dvs-1 {
}; };
}; };
&pinctrl_1 {
/* Adjust WiFi drive strengths lower for EMI */
sd1_clk: sd1-clk {
samsung,pin-drv = <2>;
};
sd1_cmd: sd1-cmd {
samsung,pin-drv = <2>;
};
sd1_bus1: sd1-bus-width1 {
samsung,pin-drv = <2>;
};
sd1_bus4: sd1-bus-width4 {
samsung,pin-drv = <2>;
};
sd1_bus8: sd1-bus-width8 {
samsung,pin-drv = <2>;
};
};
&pinctrl_2 { &pinctrl_2 {
pmic_dvs_2: pmic-dvs-2 { pmic_dvs_2: pmic-dvs-2 {
samsung,pins = "gpj4-2"; samsung,pins = "gpj4-2";
......
...@@ -201,6 +201,13 @@ sd1_clk: sd1-clk { ...@@ -201,6 +201,13 @@ sd1_clk: sd1-clk {
samsung,pin-drv = <3>; samsung,pin-drv = <3>;
}; };
sd0_rclk: sd0-rclk {
samsung,pins = "gpc0-7";
samsung,pin-function = <2>;
samsung,pin-pud = <1>;
samsung,pin-drv = <3>;
};
sd1_cmd: sd1-cmd { sd1_cmd: sd1-cmd {
samsung,pins = "gpc1-1"; samsung,pins = "gpc1-1";
samsung,pin-function = <2>; samsung,pin-function = <2>;
......
...@@ -80,8 +80,11 @@ mmc@12200000 { ...@@ -80,8 +80,11 @@ mmc@12200000 {
samsung,dw-mshc-ciu-div = <3>; samsung,dw-mshc-ciu-div = <3>;
samsung,dw-mshc-sdr-timing = <0 4>; samsung,dw-mshc-sdr-timing = <0 4>;
samsung,dw-mshc-ddr-timing = <0 2>; samsung,dw-mshc-ddr-timing = <0 2>;
samsung,dw-mshc-hs400-timing = <0 2>;
samsung,read-strobe-delay = <90>;
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus4 &sd0_bus8>; pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus1 &sd0_bus4 &sd0_bus8
&sd0_rclk>;
bus-width = <8>; bus-width = <8>;
cap-mmc-highspeed; cap-mmc-highspeed;
}; };
...@@ -93,7 +96,7 @@ mmc@12220000 { ...@@ -93,7 +96,7 @@ mmc@12220000 {
samsung,dw-mshc-sdr-timing = <2 3>; samsung,dw-mshc-sdr-timing = <2 3>;
samsung,dw-mshc-ddr-timing = <1 2>; samsung,dw-mshc-ddr-timing = <1 2>;
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus4>; pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus1 &sd2_bus4>;
bus-width = <4>; bus-width = <4>;
cap-sd-highspeed; cap-sd-highspeed;
}; };
......
...@@ -221,7 +221,7 @@ mct: mct@101C0000 { ...@@ -221,7 +221,7 @@ mct: mct@101C0000 {
compatible = "samsung,exynos4210-mct"; compatible = "samsung,exynos4210-mct";
reg = <0x101C0000 0x800>; reg = <0x101C0000 0x800>;
interrupt-controller; interrupt-controller;
#interrups-cells = <1>; #interrupt-cells = <1>;
interrupt-parent = <&mct_map>; interrupt-parent = <&mct_map>;
interrupts = <0>, <1>, <2>, <3>, <4>, <5>, <6>, <7>, interrupts = <0>, <1>, <2>, <3>, <4>, <5>, <6>, <7>,
<8>, <9>, <10>, <11>; <8>, <9>, <10>, <11>;
...@@ -251,6 +251,8 @@ gsc_pd: power-domain@10044000 { ...@@ -251,6 +251,8 @@ gsc_pd: power-domain@10044000 {
compatible = "samsung,exynos4210-pd"; compatible = "samsung,exynos4210-pd";
reg = <0x10044000 0x20>; reg = <0x10044000 0x20>;
#power-domain-cells = <0>; #power-domain-cells = <0>;
clocks = <&clock CLK_GSCL0>, <&clock CLK_GSCL1>;
clock-names = "asb0", "asb1";
}; };
isp_pd: power-domain@10044020 { isp_pd: power-domain@10044020 {
...@@ -283,9 +285,11 @@ disp_pd: power-domain@100440C0 { ...@@ -283,9 +285,11 @@ disp_pd: power-domain@100440C0 {
<&clock CLK_MOUT_SW_ACLK300>, <&clock CLK_MOUT_SW_ACLK300>,
<&clock CLK_MOUT_USER_ACLK300_DISP1>, <&clock CLK_MOUT_USER_ACLK300_DISP1>,
<&clock CLK_MOUT_SW_ACLK400>, <&clock CLK_MOUT_SW_ACLK400>,
<&clock CLK_MOUT_USER_ACLK400_DISP1>; <&clock CLK_MOUT_USER_ACLK400_DISP1>,
<&clock CLK_FIMD1>, <&clock CLK_MIXER>;
clock-names = "oscclk", "pclk0", "clk0", clock-names = "oscclk", "pclk0", "clk0",
"pclk1", "clk1", "pclk2", "clk2"; "pclk1", "clk1", "pclk2", "clk2",
"asb0", "asb1";
}; };
pinctrl_0: pinctrl@13400000 { pinctrl_0: pinctrl@13400000 {
......
...@@ -264,6 +264,13 @@ buck10_reg: BUCK10 { ...@@ -264,6 +264,13 @@ buck10_reg: BUCK10 {
}; };
}; };
emmc_pwrseq: pwrseq {
pinctrl-0 = <&emmc_nrst_pin>;
pinctrl-names = "default";
compatible = "mmc-pwrseq-emmc";
reset-gpios = <&gpd1 0 1>;
};
i2c_2: i2c@12C80000 { i2c_2: i2c@12C80000 {
samsung,i2c-sda-delay = <100>; samsung,i2c-sda-delay = <100>;
samsung,i2c-max-bus-freq = <66000>; samsung,i2c-max-bus-freq = <66000>;
...@@ -298,13 +305,14 @@ &mfc { ...@@ -298,13 +305,14 @@ &mfc {
&mmc_0 { &mmc_0 {
status = "okay"; status = "okay";
mmc-pwrseq = <&emmc_pwrseq>;
broken-cd; broken-cd;
card-detect-delay = <200>; card-detect-delay = <200>;
samsung,dw-mshc-ciu-div = <3>; samsung,dw-mshc-ciu-div = <3>;
samsung,dw-mshc-sdr-timing = <0 4>; samsung,dw-mshc-sdr-timing = <0 4>;
samsung,dw-mshc-ddr-timing = <0 2>; samsung,dw-mshc-ddr-timing = <0 2>;
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus4 &sd0_bus8>; pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus1 &sd0_bus4 &sd0_bus8>;
bus-width = <8>; bus-width = <8>;
cap-mmc-highspeed; cap-mmc-highspeed;
}; };
...@@ -316,7 +324,7 @@ &mmc_2 { ...@@ -316,7 +324,7 @@ &mmc_2 {
samsung,dw-mshc-sdr-timing = <0 4>; samsung,dw-mshc-sdr-timing = <0 4>;
samsung,dw-mshc-ddr-timing = <0 2>; samsung,dw-mshc-ddr-timing = <0 2>;
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus4>; pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus1 &sd2_bus4>;
bus-width = <4>; bus-width = <4>;
cap-sd-highspeed; cap-sd-highspeed;
}; };
...@@ -330,6 +338,15 @@ hdmi_hpd_irq: hdmi-hpd-irq { ...@@ -330,6 +338,15 @@ hdmi_hpd_irq: hdmi-hpd-irq {
}; };
}; };
&pinctrl_1 {
emmc_nrst_pin: emmc-nrst {
samsung,pins = "gpd1-0";
samsung,pin-function = <0>;
samsung,pin-pud = <0>;
samsung,pin-drv = <0>;
};
};
&usbdrd_dwc3_0 { &usbdrd_dwc3_0 {
dr_mode = "host"; dr_mode = "host";
}; };
......
...@@ -42,6 +42,10 @@ backlight: backlight { ...@@ -42,6 +42,10 @@ backlight: backlight {
pinctrl-names = "default"; pinctrl-names = "default";
}; };
chosen {
stdout-path = "serial3:115200n8";
};
fixed-rate-clocks { fixed-rate-clocks {
oscclk { oscclk {
compatible = "samsung,exynos5420-oscclk"; compatible = "samsung,exynos5420-oscclk";
...@@ -119,6 +123,13 @@ panel: panel { ...@@ -119,6 +123,13 @@ panel: panel {
power-supply = <&tps65090_fet6>; power-supply = <&tps65090_fet6>;
backlight = <&backlight>; backlight = <&backlight>;
}; };
mmc1_pwrseq: mmc1_pwrseq {
compatible = "mmc-pwrseq-simple";
reset-gpios = <&gpx0 0 GPIO_ACTIVE_LOW>; /* WIFI_EN */
clocks = <&max77802 MAX77802_CLK_32K_CP>;
clock-names = "ext_clock";
};
}; };
&adc { &adc {
...@@ -581,6 +592,8 @@ max98091: codec@10 { ...@@ -581,6 +592,8 @@ max98091: codec@10 {
interrupt-parent = <&gpx0>; interrupt-parent = <&gpx0>;
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&max98091_irq>; pinctrl-0 = <&max98091_irq>;
clocks = <&pmu_system_controller 0>;
clock-names = "mclk";
}; };
light-sensor@44 { light-sensor@44 {
...@@ -641,18 +654,40 @@ &mmc_0 { ...@@ -641,18 +654,40 @@ &mmc_0 {
num-slots = <1>; num-slots = <1>;
broken-cd; broken-cd;
mmc-hs200-1_8v; mmc-hs200-1_8v;
mmc-hs400-1_8v;
cap-mmc-highspeed; cap-mmc-highspeed;
non-removable; non-removable;
card-detect-delay = <200>; card-detect-delay = <200>;
clock-frequency = <400000000>; clock-frequency = <800000000>;
samsung,dw-mshc-ciu-div = <3>; samsung,dw-mshc-ciu-div = <3>;
samsung,dw-mshc-sdr-timing = <0 4>; samsung,dw-mshc-sdr-timing = <0 4>;
samsung,dw-mshc-ddr-timing = <0 2>; samsung,dw-mshc-ddr-timing = <0 2>;
samsung,dw-mshc-hs400-timing = <0 2>;
samsung,read-strobe-delay = <90>;
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus4 &sd0_bus8>; pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus1 &sd0_bus4 &sd0_bus8 &sd0_rclk>;
bus-width = <8>; bus-width = <8>;
}; };
&mmc_1 {
status = "okay";
num-slots = <1>;
broken-cd;
cap-sdio-irq;
card-detect-delay = <200>;
clock-frequency = <400000000>;
samsung,dw-mshc-ciu-div = <1>;
samsung,dw-mshc-sdr-timing = <0 1>;
samsung,dw-mshc-ddr-timing = <0 2>;
pinctrl-names = "default";
pinctrl-0 = <&sd1_clk>, <&sd1_cmd>, <&sd1_int>, <&sd1_bus1>,
<&sd1_bus4>, <&sd1_bus8>, <&wifi_en>;
bus-width = <4>;
cap-sd-highspeed;
mmc-pwrseq = <&mmc1_pwrseq>;
vqmmc-supply = <&buck10_reg>;
};
&mmc_2 { &mmc_2 {
status = "okay"; status = "okay";
num-slots = <1>; num-slots = <1>;
...@@ -663,7 +698,7 @@ &mmc_2 { ...@@ -663,7 +698,7 @@ &mmc_2 {
samsung,dw-mshc-sdr-timing = <2 3>; samsung,dw-mshc-sdr-timing = <2 3>;
samsung,dw-mshc-ddr-timing = <1 2>; samsung,dw-mshc-ddr-timing = <1 2>;
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus4>; pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus1 &sd2_bus4>;
bus-width = <4>; bus-width = <4>;
}; };
...@@ -672,6 +707,13 @@ &pinctrl_0 { ...@@ -672,6 +707,13 @@ &pinctrl_0 {
pinctrl-names = "default"; pinctrl-names = "default";
pinctrl-0 = <&mask_tpm_reset>; pinctrl-0 = <&mask_tpm_reset>;
wifi_en: wifi-en {
samsung,pins = "gpx0-0";
samsung,pin-function = <1>;
samsung,pin-pud = <0>;
samsung,pin-drv = <0>;
};
max98091_irq: max98091-irq { max98091_irq: max98091-irq {
samsung,pins = "gpx0-2"; samsung,pins = "gpx0-2";
samsung,pin-function = <0>; samsung,pin-function = <0>;
...@@ -759,6 +801,29 @@ pmic_dvs_1: pmic-dvs-1 { ...@@ -759,6 +801,29 @@ pmic_dvs_1: pmic-dvs-1 {
}; };
}; };
&pinctrl_1 {
/* Adjust WiFi drive strengths lower for EMI */
sd1_clk: sd1-clk {
samsung,pin-drv = <2>;
};
sd1_cmd: sd1-cmd {
samsung,pin-drv = <2>;
};
sd1_bus1: sd1-bus-width1 {
samsung,pin-drv = <2>;
};
sd1_bus4: sd1-bus-width4 {
samsung,pin-drv = <2>;
};
sd1_bus8: sd1-bus-width8 {
samsung,pin-drv = <2>;
};
};
&pinctrl_2 { &pinctrl_2 {
pmic_dvs_2: pmic-dvs-2 { pmic_dvs_2: pmic-dvs-2 {
samsung,pins = "gpj4-2"; samsung,pins = "gpj4-2";
......
/*
* Device Tree file for LaCie 2Big NAS
*
* Copyright (C) 2015 Seagate
*
* Author: Simon Guinot <simon.guinot@sequanux.org>
*
* This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any
* warranty of any kind, whether express or implied.
*/
/dts-v1/;
#include "kirkwood-netxbig.dtsi"
/ {
model = "LaCie 2Big NAS";
compatible = "lacie,nas2big", "lacie,netxbig", "marvell,kirkwood-88f6282", "marvell,kirkwood";
memory {
device_type = "memory";
reg = <0x00000000 0x10000000>;
};
chosen {
bootargs = "console=ttyS0,115200n8";
stdout-path = &uart0;
};
mbus {
pcie-controller {
status = "okay";
pcie@1,0 {
status = "okay";
};
};
};
ocp@f1000000 {
rtc@10300 {
/* The on-chip RTC is not powered (no supercap). */
status = "disabled";
};
spi@10600 {
/*
* A NAND flash is used instead of an SPI flash for
* the other netxbig-compatible boards.
*/
status = "disabled";
};
};
fan {
/*
* An I2C fan controller (GMT G762) is used but alarm is
* wired to a separate GPIO.
*/
compatible = "gpio-fan";
alarm-gpios = <&gpio0 25 GPIO_ACTIVE_LOW>;
};
regulators: regulators {
status = "okay";
compatible = "simple-bus";
#address-cells = <1>;
#size-cells = <0>;
pinctrl-names = "default";
regulator@2 {
compatible = "regulator-fixed";
reg = <2>;
regulator-name = "hdd1power";
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
enable-active-high;
regulator-always-on;
regulator-boot-on;
gpio = <&gpio0 17 GPIO_ACTIVE_HIGH>;
};
clocks {
g762_clk: g762-oscillator {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <32768>;
};
};
};
};
&mdio {
status = "okay";
ethphy0: ethernet-phy@0 {
reg = <0>;
};
};
&i2c0 {
status = "okay";
/*
* An external I2C RTC (Dallas DS1337S+) is used. This allows
* to power-up the board on an RTC alarm. The external RTC can
* be kept powered, even when the SoC is off.
*/
rtc@68 {
compatible = "dallas,ds1307";
reg = <0x68>;
interrupts = <43>;
};
g762@3e {
compatible = "gmt,g762";
reg = <0x3e>;
clocks = <&g762_clk>;
};
};
&nand {
chip-delay = <50>;
status = "okay";
partition@0 {
label = "U-Boot";
reg = <0x0 0x100000>;
};
partition@100000 {
label = "uImage";
reg = <0x100000 0x1000000>;
};
partition@1100000 {
label = "root";
reg = <0x1100000 0x8000000>;
};
partition@9100000 {
label = "unused";
reg = <0x9100000 0x6f00000>;
};
};
...@@ -27,6 +27,11 @@ memory { ...@@ -27,6 +27,11 @@ memory {
device_type = "memory"; device_type = "memory";
reg = <0x00000000 0x10000000>; reg = <0x00000000 0x10000000>;
}; };
fan {
compatible = "gpio-fan";
alarm-gpios = <&gpio0 25 GPIO_ACTIVE_LOW>;
};
}; };
&regulators { &regulators {
......
...@@ -150,5 +150,25 @@ ir_receiver: ir-receiver@c8100480 { ...@@ -150,5 +150,25 @@ ir_receiver: ir-receiver@c8100480 {
interrupts = <0 15 1>; interrupts = <0 15 1>;
status = "disabled"; status = "disabled";
}; };
spifc: spi@c1108c80 {
compatible = "amlogic,meson6-spifc";
reg = <0xc1108c80 0x80>;
#address-cells = <1>;
#size-cells = <0>;
clocks = <&clk81>;
status = "disabled";
};
ethmac: ethernet@c9410000 {
compatible = "amlogic,meson6-dwmac", "snps,dwmac";
reg = <0xc9410000 0x10000
0xc1108108 0x4>;
interrupts = <0 8 1>;
interrupt-names = "macirq";
clocks = <&clk81>;
clock-names = "stmmaceth";
status = "disabled";
};
}; };
}; /* end of / */ }; /* end of / */
...@@ -64,3 +64,7 @@ memory { ...@@ -64,3 +64,7 @@ memory {
&uart_AO { &uart_AO {
status = "okay"; status = "okay";
}; };
&ethmac {
status = "okay";
};
/*
* Copyright 2014 Beniamino Galvani <b.galvani@gmail.com>
*
* This file is dual-licensed: you can use it either under the terms
* of the GPL or the X11 license, at your option. Note that this dual
* licensing only applies to this file, and not this project as a
* whole.
*
* a) This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This library 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.
*
* Or, alternatively,
*
* b) Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
* files (the "Software"), to deal in the Software without
* restriction, including without limitation the rights to use,
* copy, modify, merge, publish, distribute, sublicense, and/or
* sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following
* conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*/
/dts-v1/;
#include <dt-bindings/gpio/gpio.h>
#include "meson8.dtsi"
/ {
model = "MINIX NEO-X8";
compatible = "minix,neo-x8", "amlogic,meson8";
aliases {
serial0 = &uart_AO;
};
memory {
reg = <0x40000000 0x80000000>;
};
gpio-leds {
compatible = "gpio-leds";
blue {
label = "x8:blue:power";
gpios = <&gpio_ao GPIO_TEST_N GPIO_ACTIVE_HIGH>;
};
};
};
&uart_AO {
status = "okay";
pinctrl-0 = <&uart_ao_a_pins>;
pinctrl-names = "default";
};
&i2c_AO {
status = "okay";
pinctrl-0 = <&i2c_ao_pins>;
pinctrl-names = "default";
pmic@32 {
compatible = "ricoh,rn5t618";
reg = <0x32>;
regulators {
};
};
rtc@51 {
compatible = "nxp,pcf8563";
reg = <0x51>;
};
};
&spifc {
status = "okay";
pinctrl-0 = <&spi_nor_pins>;
pinctrl-names = "default";
spi-flash@0 {
compatible = "mxicy,mx25l1606e";
#address-cells = <1>;
#size-cells = <1>;
reg = <0>;
spi-max-frequency = <30000000>;
partition@0 {
label = "boot";
reg = <0x0 0x100000>;
};
partition@100000 {
label = "env";
reg = <0x100000 0x10000>;
};
};
};
&ir_receiver {
status = "okay";
pinctrl-0 = <&ir_recv_pins>;
pinctrl-names = "default";
};
&ethmac {
status = "okay";
pinctrl-0 = <&eth_pins>;
pnictrl-names = "default";
};
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment