Add devicetree (work in progress)
This commit is contained in:
parent
f198d12675
commit
2c23fa705d
|
@ -0,0 +1,16 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
. script_env
|
||||
|
||||
DTC="$LINUX_DIR/scripts/dtc/dtc"
|
||||
|
||||
if [ ! -x "$DTC" ]; then
|
||||
echo "ERROR: Missing $DTC" >&2
|
||||
echo " Build Linux kernel to build the device tree compiler" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
$DTC --symbols -I dts -O dtb -i "$LINUX_DIR/arch/arm/boot/dts/xilinx" -o devicetree/devicetree.dtb devicetree/redpitaya_puzzlefw.dts
|
||||
|
|
@ -0,0 +1,208 @@
|
|||
/*
|
||||
* Device tree for Red Pitaya PuzzleFw firmware.
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
// Include defaults from Linux kernel source tree.
|
||||
/include/ "zynq-7000.dtsi"
|
||||
|
||||
/ {
|
||||
model = "RedPitaya PuzzleFW";
|
||||
compatible = "xlnx,zynq-7000";
|
||||
|
||||
chosen {
|
||||
bootargs = "earlycon";
|
||||
stdout-path = "serial0:115200n8";
|
||||
};
|
||||
|
||||
aliases {
|
||||
ethernet0 = &gem0;
|
||||
i2c0 = &i2c0;
|
||||
serial0 = &uart0;
|
||||
mmc0 = &sdhci0;
|
||||
};
|
||||
|
||||
// Red Pitaya: 512 MByte DDR RAM at address 0x00000000
|
||||
memory@0 {
|
||||
device_type = "memory";
|
||||
reg = <0x0 0x20000000>;
|
||||
};
|
||||
|
||||
// Red Pitaya: 2 LEDs controlled by PS
|
||||
gpio-leds {
|
||||
compatible = "gpio-leds";
|
||||
led-8-yellow {
|
||||
label = "led8";
|
||||
gpios = <&gpio0 0 0>;
|
||||
default-state = "off";
|
||||
linux,default-trigger = "mmc0";
|
||||
};
|
||||
led-9-red {
|
||||
label = "led9";
|
||||
gpios = <&gpio0 7 0>;
|
||||
default-state = "off";
|
||||
linux,default-trigger = "heartbeat";
|
||||
};
|
||||
};
|
||||
|
||||
usb_phy0: phy0 {
|
||||
compatible = "usb-nop-xceiv";
|
||||
#phy-cells = <0>;
|
||||
};
|
||||
|
||||
// Register range and interrupts for FPGA logic
|
||||
puzzlefw@43c00000 {
|
||||
compatible = "jigsaw,puzzlefw";
|
||||
//
|
||||
// Register address mapping:
|
||||
//
|
||||
// Address 0x43000000 .. 0x430fffff (1 MB) = user registers
|
||||
// Address 0x43100000 .. 0x43100fff (4 kB) = setup registers
|
||||
//
|
||||
reg = <0x43000000 0x100000>,
|
||||
<0x43100000 0x1000>;
|
||||
//
|
||||
// The FPGA firmware uses interrupts
|
||||
// IRQ_F2P[0] .. IRQ_F2P[3]
|
||||
//
|
||||
// These correspond to IRQ 61 .. 64 in the GIC.
|
||||
//
|
||||
// The format <0 29 4> means the following:
|
||||
// 0 : denotes an SPI interrupt (shared peripheral)
|
||||
// 29 : the kernel adds 32 to this value to get 29+32 = 61
|
||||
// 4 : IRQ_TYPE_LEVEL_HIGH (level sensitive interrupt)
|
||||
//
|
||||
interrupt-parent = <&intc>;
|
||||
interrupts = <0 29 4>,
|
||||
<0 30 4>,
|
||||
<0 31 4>,
|
||||
<0 32 4>;
|
||||
};
|
||||
|
||||
// Reserved memory for DMA buffers
|
||||
reserved-memory {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges;
|
||||
|
||||
puzzlefw {
|
||||
compatible = "jigsaw,puzzlefw";
|
||||
size = <0x4000000>; // 64 MByte
|
||||
alignment = <0x100000>; // 1 MByte
|
||||
no-map;
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
&gem0 {
|
||||
status = "okay";
|
||||
xlnx,ptp-enet-clock = <0x69f6bcb>;
|
||||
phy-mode = "rgmii-id";
|
||||
phy-handle = <ðernet_phy>;
|
||||
|
||||
// Red Pitaya: Lantiq Ethernet PHY, MDIO address 1
|
||||
ethernet_phy: ethernet-phy@1 {
|
||||
reg = <1>;
|
||||
device_type = "ethernet-phy";
|
||||
};
|
||||
};
|
||||
|
||||
&gpio0 {
|
||||
emio-gpio-width = <24>;
|
||||
gpio-mask-high = <0x0>;
|
||||
gpio-mask-low = <0x5600>;
|
||||
};
|
||||
|
||||
&i2c0 {
|
||||
status = "okay";
|
||||
|
||||
// Red Pitaya: EEPROM chip on internal I2C bus.
|
||||
|
||||
eeprom@50 {
|
||||
compatible = "24c64";
|
||||
reg = <0x50>;
|
||||
pagesize = <32>;
|
||||
};
|
||||
|
||||
/*
|
||||
eeprom@51 {
|
||||
compatible = "24c64";
|
||||
reg = <0x51>;
|
||||
pagesize = <32>;
|
||||
};
|
||||
*/
|
||||
};
|
||||
|
||||
&intc {
|
||||
num_cpus = <2>;
|
||||
num_interrupts = <96>;
|
||||
};
|
||||
|
||||
&qspi {
|
||||
status = "okay";
|
||||
is-dual = <0>;
|
||||
num-cs = <1>;
|
||||
spi-rx-bus-width = <4>;
|
||||
spi-tx-bus-width = <4>;
|
||||
};
|
||||
|
||||
&sdhci0 {
|
||||
status = "okay";
|
||||
xlnx,has-cd = <0x1>;
|
||||
xlnx,has-power = <0x1>;
|
||||
xlnx,has-wp = <0x1>;
|
||||
};
|
||||
|
||||
&spi0 {
|
||||
is-decoded-cs = <0>;
|
||||
num-cs = <3>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&spi1 {
|
||||
is-decoded-cs = <0>;
|
||||
num-cs = <1>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart0 {
|
||||
status = "okay";
|
||||
device_type = "serial";
|
||||
cts-override;
|
||||
};
|
||||
|
||||
&uart1 {
|
||||
status = "okay";
|
||||
device_type = "serial";
|
||||
cts-override;
|
||||
};
|
||||
|
||||
&usb0 {
|
||||
status = "okay";
|
||||
phy_type = "ulpi";
|
||||
dr_mode = "host";
|
||||
usb-phy = <&usb_phy0>;
|
||||
usb-reset = <&gpio0 48 0>;
|
||||
};
|
||||
|
||||
&clkc {
|
||||
fclk-enable = <0x1>;
|
||||
ps-clk-frequency = <33333333>;
|
||||
};
|
||||
|
||||
&devcfg {
|
||||
// Override clock list.
|
||||
clocks = <&clkc 12>, <&clkc 15>, <&clkc 16>, <&clkc 17>, <&clkc 18>;
|
||||
clock-names = "ref_clk", "fclk0", "fclk1", "fclk2", "fclk3";
|
||||
};
|
||||
|
||||
/*
|
||||
TODO -- later
|
||||
&watchdog0{
|
||||
status = "okay";
|
||||
reset-on-timeout;
|
||||
};
|
||||
*/
|
||||
|
Loading…
Reference in New Issue