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

Signed-off-by: Rahul Bedarkar <rahul.bedar...@imgtec.com>
---
Changes in v2:
  - Correct RAM size. It is 256MB instead of 128MB.
  - Rename nodes pwm_leds -> leds and gpio_keys -> keys (Suggested by Rob 
Herring)
  - Don't use '_' in node name for internal_dac_supply (Suggested by Rob 
Herring)
  - Add part name in compatible string for spi-nor (Suggested by Rob Herring)
---
 .../bindings/mips/img/pistachio-marduk.txt         |  10 ++
 MAINTAINERS                                        |   6 +
 arch/mips/boot/dts/img/Makefile                    |   9 ++
 arch/mips/boot/dts/img/pistachio_marduk.dts        | 163 +++++++++++++++++++++
 4 files changed, 188 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/MAINTAINERS b/MAINTAINERS
index 98bcf06..8e6c962b 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -7515,6 +7515,12 @@ W:       http://www.kernel.org/doc/man-pages
 L:     linux-...@vger.kernel.org
 S:     Maintained
 
+MARDUK (CREATOR CI40) DEVICE TREE SUPPORT
+M:     Rahul Bedarkar <rahul.bedar...@imgtec.com>
+L:     linux-m...@linux-mips.org
+S:     Maintained
+F:     arch/mips/boot/dts/img/pistachio_marduk.dts
+
 MARVELL 88E6XXX ETHERNET SWITCH FABRIC DRIVER
 M:     Andrew Lunn <and...@lunn.ch>
 M:     Vivien Didelot <vivien.dide...@savoirfairelinux.com>
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 = <&reg_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.6.2

Reply via email to