52c17bff3c
This adds kernel support for the Pistachio SoC and the Marduk (Ci40) board which uses it. Much of the code for Pistachio has been upstreamed however some patches are still required to boot from the Marduk board: * spi bug fixes * dma bug fixes * pistachio internal clock tree bug fixes * spi-nand implementation * dts based mtd device naming scheme * dts backports and bug fixes Signed-off-by: Abhijit Mahajani <Abhijit.Mahajani@imgtec.com> Signed-off-by: Francois Berder <francois.berder@imgtec.com> Signed-off-by: Ian Pozella <Ian.Pozella@imgtec.com>
242 lines
5.5 KiB
Diff
242 lines
5.5 KiB
Diff
From a189771546b304250cf18b26748edfefb857adbf Mon Sep 17 00:00:00 2001
|
|
From: Rahul Bedarkar <rahul.bedarkar@imgtec.com>
|
|
Date: Fri, 14 Oct 2016 11:25:55 +0530
|
|
Subject: MIPS: DTS: img: add device tree for Marduk board
|
|
|
|
Add support for Imagination Technologies' Marduk board which is based
|
|
on Pistachio SoC. It is also known as Creator Ci40. Marduk is legacy
|
|
name and will be there for decades.
|
|
|
|
Documentation for this board can be found on
|
|
https://docs.creatordev.io/ci40/
|
|
|
|
This patch adds initial support for board with following peripherals:
|
|
|
|
* PWM based heartbeat LED
|
|
* GPIO based buttons
|
|
* SPI NOR flash on SPI1
|
|
* UART0 and UART1
|
|
* SD card
|
|
* Ethernet
|
|
* USB
|
|
* PWM
|
|
* ADC
|
|
* I2C
|
|
|
|
(apply from https://patchwork.linux-mips.org/project/linux-mips/list/?submitter=7165)
|
|
|
|
Signed-off-by: Rahul Bedarkar <rahul.bedarkar@imgtec.com>
|
|
Acked-by: Rob Herring <robh@kernel.org>
|
|
Acked-by: James Hartley <james.hartley@imgtec.com>
|
|
---
|
|
.../bindings/mips/img/pistachio-marduk.txt | 10 ++
|
|
arch/mips/boot/dts/img/Makefile | 9 ++
|
|
arch/mips/boot/dts/img/pistachio_marduk.dts | 163 +++++++++++++++++++++
|
|
3 files changed, 182 insertions(+)
|
|
create mode 100644 Documentation/devicetree/bindings/mips/img/pistachio-marduk.txt
|
|
create mode 100644 arch/mips/boot/dts/img/Makefile
|
|
create mode 100644 arch/mips/boot/dts/img/pistachio_marduk.dts
|
|
|
|
diff --git a/Documentation/devicetree/bindings/mips/img/pistachio-marduk.txt b/Documentation/devicetree/bindings/mips/img/pistachio-marduk.txt
|
|
new file mode 100644
|
|
index 0000000..2d5126d
|
|
--- /dev/null
|
|
+++ b/Documentation/devicetree/bindings/mips/img/pistachio-marduk.txt
|
|
@@ -0,0 +1,10 @@
|
|
+Imagination Technologies' Pistachio SoC based Marduk Board
|
|
+==========================================================
|
|
+
|
|
+Compatible string must be "img,pistachio-marduk", "img,pistachio"
|
|
+
|
|
+Hardware and other related documentation is available at
|
|
+https://docs.creatordev.io/ci40/
|
|
+
|
|
+It is also known as Creator Ci40. Marduk is legacy name and will
|
|
+be there for decades.
|
|
diff --git a/arch/mips/boot/dts/img/Makefile b/arch/mips/boot/dts/img/Makefile
|
|
new file mode 100644
|
|
index 0000000..69a65f0
|
|
--- /dev/null
|
|
+++ b/arch/mips/boot/dts/img/Makefile
|
|
@@ -0,0 +1,9 @@
|
|
+dtb-$(CONFIG_MACH_PISTACHIO) += pistachio_marduk.dtb
|
|
+
|
|
+obj-y += $(patsubst %.dtb, %.dtb.o, $(dtb-y))
|
|
+
|
|
+# Force kbuild to make empty built-in.o if necessary
|
|
+obj- += dummy.o
|
|
+
|
|
+always := $(dtb-y)
|
|
+clean-files := *.dtb *.dtb.S
|
|
diff --git a/arch/mips/boot/dts/img/pistachio_marduk.dts b/arch/mips/boot/dts/img/pistachio_marduk.dts
|
|
new file mode 100644
|
|
index 0000000..cf9cebd
|
|
--- /dev/null
|
|
+++ b/arch/mips/boot/dts/img/pistachio_marduk.dts
|
|
@@ -0,0 +1,163 @@
|
|
+/*
|
|
+ * Copyright (C) 2015, 2016 Imagination Technologies Ltd.
|
|
+ *
|
|
+ * 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.
|
|
+ *
|
|
+ * IMG Marduk board is also known as Creator Ci40.
|
|
+ */
|
|
+
|
|
+/dts-v1/;
|
|
+
|
|
+#include "pistachio.dtsi"
|
|
+
|
|
+/ {
|
|
+ model = "IMG Marduk (Creator Ci40)";
|
|
+ compatible = "img,pistachio-marduk", "img,pistachio";
|
|
+
|
|
+ aliases {
|
|
+ serial0 = &uart0;
|
|
+ serial1 = &uart1;
|
|
+ ethernet0 = &enet;
|
|
+ spi0 = &spfi0;
|
|
+ spi1 = &spfi1;
|
|
+ };
|
|
+
|
|
+ chosen {
|
|
+ bootargs = "root=/dev/sda1 rootwait ro lpj=723968";
|
|
+ stdout-path = "serial1:115200";
|
|
+ };
|
|
+
|
|
+ memory {
|
|
+ device_type = "memory";
|
|
+ reg = <0x00000000 0x10000000>;
|
|
+ };
|
|
+
|
|
+ reg_1v8: fixed-regulator {
|
|
+ compatible = "regulator-fixed";
|
|
+ regulator-name = "aux_adc_vref";
|
|
+ regulator-min-microvolt = <1800000>;
|
|
+ regulator-max-microvolt = <1800000>;
|
|
+ regulator-boot-on;
|
|
+ };
|
|
+
|
|
+ internal_dac_supply: internal-dac-supply {
|
|
+ compatible = "regulator-fixed";
|
|
+ regulator-name = "internal_dac_supply";
|
|
+ regulator-min-microvolt = <1800000>;
|
|
+ regulator-max-microvolt = <1800000>;
|
|
+ };
|
|
+
|
|
+ leds {
|
|
+ compatible = "pwm-leds";
|
|
+ heartbeat {
|
|
+ label = "marduk:red:heartbeat";
|
|
+ pwms = <&pwm 3 300000>;
|
|
+ max-brightness = <255>;
|
|
+ linux,default-trigger = "heartbeat";
|
|
+ };
|
|
+ };
|
|
+
|
|
+ keys {
|
|
+ compatible = "gpio-keys";
|
|
+ button@1 {
|
|
+ label = "Button 1";
|
|
+ linux,code = <0x101>; /* BTN_1 */
|
|
+ gpios = <&gpio3 6 GPIO_ACTIVE_LOW>;
|
|
+ };
|
|
+ button@2 {
|
|
+ label = "Button 2";
|
|
+ linux,code = <0x102>; /* BTN_2 */
|
|
+ gpios = <&gpio2 14 GPIO_ACTIVE_LOW>;
|
|
+ };
|
|
+ };
|
|
+};
|
|
+
|
|
+&internal_dac {
|
|
+ VDD-supply = <&internal_dac_supply>;
|
|
+};
|
|
+
|
|
+&spfi1 {
|
|
+ status = "okay";
|
|
+
|
|
+ pinctrl-0 = <&spim1_pins>, <&spim1_quad_pins>, <&spim1_cs0_pin>,
|
|
+ <&spim1_cs1_pin>;
|
|
+ pinctrl-names = "default";
|
|
+ cs-gpios = <&gpio0 0 GPIO_ACTIVE_HIGH>, <&gpio0 1 GPIO_ACTIVE_HIGH>;
|
|
+
|
|
+ flash@0 {
|
|
+ compatible = "spansion,s25fl016k", "jedec,spi-nor";
|
|
+ reg = <0>;
|
|
+ spi-max-frequency = <50000000>;
|
|
+ };
|
|
+};
|
|
+
|
|
+&uart0 {
|
|
+ status = "okay";
|
|
+ assigned-clock-rates = <114278400>, <1843200>;
|
|
+};
|
|
+
|
|
+&uart1 {
|
|
+ status = "okay";
|
|
+};
|
|
+
|
|
+&usb {
|
|
+ status = "okay";
|
|
+};
|
|
+
|
|
+&enet {
|
|
+ status = "okay";
|
|
+};
|
|
+
|
|
+&pin_enet {
|
|
+ drive-strength = <2>;
|
|
+};
|
|
+
|
|
+&pin_enet_phy_clk {
|
|
+ drive-strength = <2>;
|
|
+};
|
|
+
|
|
+&sdhost {
|
|
+ status = "okay";
|
|
+ bus-width = <4>;
|
|
+ disable-wp;
|
|
+};
|
|
+
|
|
+&pin_sdhost_cmd {
|
|
+ drive-strength = <2>;
|
|
+};
|
|
+
|
|
+&pin_sdhost_data {
|
|
+ drive-strength = <2>;
|
|
+};
|
|
+
|
|
+&pwm {
|
|
+ status = "okay";
|
|
+
|
|
+ pinctrl-0 = <&pwmpdm0_pin>, <&pwmpdm1_pin>, <&pwmpdm2_pin>,
|
|
+ <&pwmpdm3_pin>;
|
|
+ pinctrl-names = "default";
|
|
+};
|
|
+
|
|
+&adc {
|
|
+ status = "okay";
|
|
+ vref-supply = <®_1v8>;
|
|
+ adc-reserved-channels = <0x10>;
|
|
+};
|
|
+
|
|
+&i2c2 {
|
|
+ status = "okay";
|
|
+ clock-frequency = <400000>;
|
|
+
|
|
+ tpm@20 {
|
|
+ compatible = "infineon,slb9645tt";
|
|
+ reg = <0x20>;
|
|
+ };
|
|
+
|
|
+};
|
|
+
|
|
+&i2c3 {
|
|
+ status = "okay";
|
|
+ clock-frequency = <400000>;
|
|
+};
|
|
--
|
|
2.7.4
|
|
|