| /* |
| * Device Tree Source for the Koelsch board |
| * |
| * Copyright (C) 2013 Renesas Electronics Corporation |
| * Copyright (C) 2013-2014 Renesas Solutions Corp. |
| * Copyright (C) 2014 Cogent Embedded, Inc. |
| * |
| * 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. |
| */ |
| |
| /* |
| * SSI-AK4643 |
| * |
| * SW1: 1: AK4643 |
| * 2: CN22 |
| * 3: ADV7511 |
| * |
| * This command is required when Playback/Capture |
| * |
| * amixer set "LINEOUT Mixer DACL" on |
| * amixer set "DVC Out" 100% |
| * amixer set "DVC In" 100% |
| * |
| * You can use Mute |
| * |
| * amixer set "DVC Out Mute" on |
| * amixer set "DVC In Mute" on |
| * |
| * You can use Volume Ramp |
| * |
| * amixer set "DVC Out Ramp Up Rate" "0.125 dB/64 steps" |
| * amixer set "DVC Out Ramp Down Rate" "0.125 dB/512 steps" |
| * amixer set "DVC Out Ramp" on |
| * aplay xxx.wav & |
| * amixer set "DVC Out" 80% // Volume Down |
| * amixer set "DVC Out" 100% // Volume Up |
| */ |
| |
| /dts-v1/; |
| #include "r8a7791.dtsi" |
| #include <dt-bindings/gpio/gpio.h> |
| #include <dt-bindings/input/input.h> |
| |
| / { |
| model = "Koelsch"; |
| compatible = "renesas,koelsch", "renesas,r8a7791"; |
| |
| aliases { |
| serial0 = &scif0; |
| serial1 = &scif1; |
| }; |
| |
| chosen { |
| bootargs = "ignore_loglevel rw root=/dev/nfs ip=dhcp"; |
| stdout-path = &scif0; |
| }; |
| |
| memory@40000000 { |
| device_type = "memory"; |
| reg = <0 0x40000000 0 0x40000000>; |
| }; |
| |
| memory@200000000 { |
| device_type = "memory"; |
| reg = <2 0x00000000 0 0x40000000>; |
| }; |
| |
| lbsc { |
| #address-cells = <1>; |
| #size-cells = <1>; |
| }; |
| |
| keyboard { |
| compatible = "gpio-keys"; |
| |
| key-1 { |
| gpios = <&gpio5 0 GPIO_ACTIVE_LOW>; |
| linux,code = <KEY_1>; |
| label = "SW2-1"; |
| gpio-key,wakeup; |
| debounce-interval = <20>; |
| }; |
| key-2 { |
| gpios = <&gpio5 1 GPIO_ACTIVE_LOW>; |
| linux,code = <KEY_2>; |
| label = "SW2-2"; |
| gpio-key,wakeup; |
| debounce-interval = <20>; |
| }; |
| key-3 { |
| gpios = <&gpio5 2 GPIO_ACTIVE_LOW>; |
| linux,code = <KEY_3>; |
| label = "SW2-3"; |
| gpio-key,wakeup; |
| debounce-interval = <20>; |
| }; |
| key-4 { |
| gpios = <&gpio5 3 GPIO_ACTIVE_LOW>; |
| linux,code = <KEY_4>; |
| label = "SW2-4"; |
| gpio-key,wakeup; |
| debounce-interval = <20>; |
| }; |
| key-a { |
| gpios = <&gpio7 0 GPIO_ACTIVE_LOW>; |
| linux,code = <KEY_A>; |
| label = "SW30"; |
| gpio-key,wakeup; |
| debounce-interval = <20>; |
| }; |
| key-b { |
| gpios = <&gpio7 1 GPIO_ACTIVE_LOW>; |
| linux,code = <KEY_B>; |
| label = "SW31"; |
| gpio-key,wakeup; |
| debounce-interval = <20>; |
| }; |
| key-c { |
| gpios = <&gpio7 2 GPIO_ACTIVE_LOW>; |
| linux,code = <KEY_C>; |
| label = "SW32"; |
| gpio-key,wakeup; |
| debounce-interval = <20>; |
| }; |
| key-d { |
| gpios = <&gpio7 3 GPIO_ACTIVE_LOW>; |
| linux,code = <KEY_D>; |
| label = "SW33"; |
| gpio-key,wakeup; |
| debounce-interval = <20>; |
| }; |
| key-e { |
| gpios = <&gpio7 4 GPIO_ACTIVE_LOW>; |
| linux,code = <KEY_E>; |
| label = "SW34"; |
| gpio-key,wakeup; |
| debounce-interval = <20>; |
| }; |
| key-f { |
| gpios = <&gpio7 5 GPIO_ACTIVE_LOW>; |
| linux,code = <KEY_F>; |
| label = "SW35"; |
| gpio-key,wakeup; |
| debounce-interval = <20>; |
| }; |
| key-g { |
| gpios = <&gpio7 6 GPIO_ACTIVE_LOW>; |
| linux,code = <KEY_G>; |
| label = "SW36"; |
| gpio-key,wakeup; |
| debounce-interval = <20>; |
| }; |
| }; |
| |
| leds { |
| compatible = "gpio-leds"; |
| led6 { |
| gpios = <&gpio2 19 GPIO_ACTIVE_HIGH>; |
| label = "LED6"; |
| }; |
| led7 { |
| gpios = <&gpio2 20 GPIO_ACTIVE_HIGH>; |
| label = "LED7"; |
| }; |
| led8 { |
| gpios = <&gpio2 21 GPIO_ACTIVE_HIGH>; |
| label = "LED8"; |
| }; |
| }; |
| |
| vcc_sdhi0: regulator@0 { |
| compatible = "regulator-fixed"; |
| |
| regulator-name = "SDHI0 Vcc"; |
| regulator-min-microvolt = <3300000>; |
| regulator-max-microvolt = <3300000>; |
| |
| gpio = <&gpio7 17 GPIO_ACTIVE_HIGH>; |
| enable-active-high; |
| }; |
| |
| vccq_sdhi0: regulator@1 { |
| compatible = "regulator-gpio"; |
| |
| regulator-name = "SDHI0 VccQ"; |
| regulator-min-microvolt = <1800000>; |
| regulator-max-microvolt = <3300000>; |
| |
| gpios = <&gpio2 12 GPIO_ACTIVE_HIGH>; |
| gpios-states = <1>; |
| states = <3300000 1 |
| 1800000 0>; |
| }; |
| |
| vcc_sdhi1: regulator@2 { |
| compatible = "regulator-fixed"; |
| |
| regulator-name = "SDHI1 Vcc"; |
| regulator-min-microvolt = <3300000>; |
| regulator-max-microvolt = <3300000>; |
| |
| gpio = <&gpio7 18 GPIO_ACTIVE_HIGH>; |
| enable-active-high; |
| }; |
| |
| vccq_sdhi1: regulator@3 { |
| compatible = "regulator-gpio"; |
| |
| regulator-name = "SDHI1 VccQ"; |
| regulator-min-microvolt = <1800000>; |
| regulator-max-microvolt = <3300000>; |
| |
| gpios = <&gpio2 13 GPIO_ACTIVE_HIGH>; |
| gpios-states = <1>; |
| states = <3300000 1 |
| 1800000 0>; |
| }; |
| |
| vcc_sdhi2: regulator@4 { |
| compatible = "regulator-fixed"; |
| |
| regulator-name = "SDHI2 Vcc"; |
| regulator-min-microvolt = <3300000>; |
| regulator-max-microvolt = <3300000>; |
| |
| gpio = <&gpio7 19 GPIO_ACTIVE_HIGH>; |
| enable-active-high; |
| }; |
| |
| vccq_sdhi2: regulator@5 { |
| compatible = "regulator-gpio"; |
| |
| regulator-name = "SDHI2 VccQ"; |
| regulator-min-microvolt = <1800000>; |
| regulator-max-microvolt = <3300000>; |
| |
| gpios = <&gpio2 26 GPIO_ACTIVE_HIGH>; |
| gpios-states = <1>; |
| states = <3300000 1 |
| 1800000 0>; |
| }; |
| |
| sound { |
| compatible = "simple-audio-card"; |
| |
| simple-audio-card,format = "left_j"; |
| simple-audio-card,bitclock-master = <&sndcodec>; |
| simple-audio-card,frame-master = <&sndcodec>; |
| |
| sndcpu: simple-audio-card,cpu { |
| sound-dai = <&rcar_sound>; |
| }; |
| |
| sndcodec: simple-audio-card,codec { |
| sound-dai = <&ak4643>; |
| system-clock-frequency = <11289600>; |
| }; |
| }; |
| |
| hdmi-out { |
| compatible = "hdmi-connector"; |
| type = "a"; |
| |
| port { |
| hdmi_con: endpoint { |
| remote-endpoint = <&adv7511_out>; |
| }; |
| }; |
| }; |
| |
| x2_clk: x2-clock { |
| compatible = "fixed-clock"; |
| #clock-cells = <0>; |
| clock-frequency = <148500000>; |
| }; |
| |
| x13_clk: x13-clock { |
| compatible = "fixed-clock"; |
| #clock-cells = <0>; |
| clock-frequency = <148500000>; |
| }; |
| }; |
| |
| &du { |
| pinctrl-0 = <&du_pins>; |
| pinctrl-names = "default"; |
| status = "okay"; |
| |
| clocks = <&mstp7_clks R8A7791_CLK_DU0>, |
| <&mstp7_clks R8A7791_CLK_DU1>, |
| <&mstp7_clks R8A7791_CLK_LVDS0>, |
| <&x13_clk>, <&x2_clk>; |
| clock-names = "du.0", "du.1", "lvds.0", |
| "dclkin.0", "dclkin.1"; |
| |
| ports { |
| port@0 { |
| endpoint { |
| remote-endpoint = <&adv7511_in>; |
| }; |
| }; |
| port@1 { |
| lvds_connector: endpoint { |
| }; |
| }; |
| }; |
| }; |
| |
| &extal_clk { |
| clock-frequency = <20000000>; |
| }; |
| |
| &pfc { |
| i2c2_pins: i2c2 { |
| renesas,groups = "i2c2"; |
| renesas,function = "i2c2"; |
| }; |
| |
| du_pins: du { |
| renesas,groups = "du_rgb666", "du_sync", "du_disp", "du_clk_out_0"; |
| renesas,function = "du"; |
| }; |
| |
| scif0_pins: serial0 { |
| renesas,groups = "scif0_data_d"; |
| renesas,function = "scif0"; |
| }; |
| |
| scif1_pins: serial1 { |
| renesas,groups = "scif1_data_d"; |
| renesas,function = "scif1"; |
| }; |
| |
| ether_pins: ether { |
| renesas,groups = "eth_link", "eth_mdio", "eth_rmii"; |
| renesas,function = "eth"; |
| }; |
| |
| phy1_pins: phy1 { |
| renesas,groups = "intc_irq0"; |
| renesas,function = "intc"; |
| }; |
| |
| sdhi0_pins: sd0 { |
| renesas,groups = "sdhi0_data4", "sdhi0_ctrl"; |
| renesas,function = "sdhi0"; |
| }; |
| |
| sdhi1_pins: sd1 { |
| renesas,groups = "sdhi1_data4", "sdhi1_ctrl"; |
| renesas,function = "sdhi1"; |
| }; |
| |
| sdhi2_pins: sd2 { |
| renesas,groups = "sdhi2_data4", "sdhi2_ctrl"; |
| renesas,function = "sdhi2"; |
| }; |
| |
| qspi_pins: spi0 { |
| renesas,groups = "qspi_ctrl", "qspi_data4"; |
| renesas,function = "qspi"; |
| }; |
| |
| msiof0_pins: spi1 { |
| renesas,groups = "msiof0_clk", "msiof0_sync", "msiof0_rx", |
| "msiof0_tx"; |
| renesas,function = "msiof0"; |
| }; |
| |
| usb0_pins: usb0 { |
| renesas,groups = "usb0"; |
| renesas,function = "usb0"; |
| }; |
| |
| usb1_pins: usb1 { |
| renesas,groups = "usb1"; |
| renesas,function = "usb1"; |
| }; |
| |
| vin1_pins: vin1 { |
| renesas,groups = "vin1_data8", "vin1_clk"; |
| renesas,function = "vin1"; |
| }; |
| |
| sound_pins: sound { |
| renesas,groups = "ssi0129_ctrl", "ssi0_data", "ssi1_data"; |
| renesas,function = "ssi"; |
| }; |
| |
| sound_clk_pins: sound_clk { |
| renesas,groups = "audio_clk_a"; |
| renesas,function = "audio_clk"; |
| }; |
| }; |
| |
| ðer { |
| pinctrl-0 = <ðer_pins &phy1_pins>; |
| pinctrl-names = "default"; |
| |
| phy-handle = <&phy1>; |
| renesas,ether-link-active-low; |
| status = "okay"; |
| |
| phy1: ethernet-phy@1 { |
| reg = <1>; |
| interrupt-parent = <&irqc0>; |
| interrupts = <0 IRQ_TYPE_LEVEL_LOW>; |
| micrel,led-mode = <1>; |
| }; |
| }; |
| |
| &cmt0 { |
| status = "okay"; |
| }; |
| |
| &sata0 { |
| status = "okay"; |
| }; |
| |
| &scif0 { |
| pinctrl-0 = <&scif0_pins>; |
| pinctrl-names = "default"; |
| |
| status = "okay"; |
| }; |
| |
| &scif1 { |
| pinctrl-0 = <&scif1_pins>; |
| pinctrl-names = "default"; |
| |
| status = "okay"; |
| }; |
| |
| &sdhi0 { |
| pinctrl-0 = <&sdhi0_pins>; |
| pinctrl-names = "default"; |
| |
| vmmc-supply = <&vcc_sdhi0>; |
| vqmmc-supply = <&vccq_sdhi0>; |
| cd-gpios = <&gpio6 6 GPIO_ACTIVE_LOW>; |
| wp-gpios = <&gpio6 7 GPIO_ACTIVE_HIGH>; |
| status = "okay"; |
| }; |
| |
| &sdhi1 { |
| pinctrl-0 = <&sdhi1_pins>; |
| pinctrl-names = "default"; |
| |
| vmmc-supply = <&vcc_sdhi1>; |
| vqmmc-supply = <&vccq_sdhi1>; |
| cd-gpios = <&gpio6 14 GPIO_ACTIVE_LOW>; |
| wp-gpios = <&gpio6 15 GPIO_ACTIVE_HIGH>; |
| status = "okay"; |
| }; |
| |
| &sdhi2 { |
| pinctrl-0 = <&sdhi2_pins>; |
| pinctrl-names = "default"; |
| |
| vmmc-supply = <&vcc_sdhi2>; |
| vqmmc-supply = <&vccq_sdhi2>; |
| cd-gpios = <&gpio6 22 GPIO_ACTIVE_LOW>; |
| status = "okay"; |
| }; |
| |
| &qspi { |
| pinctrl-0 = <&qspi_pins>; |
| pinctrl-names = "default"; |
| |
| status = "okay"; |
| |
| flash: flash@0 { |
| #address-cells = <1>; |
| #size-cells = <1>; |
| compatible = "spansion,s25fl512s", "jedec,spi-nor"; |
| reg = <0>; |
| spi-max-frequency = <30000000>; |
| spi-tx-bus-width = <4>; |
| spi-rx-bus-width = <4>; |
| spi-cpha; |
| spi-cpol; |
| m25p,fast-read; |
| |
| partition@0 { |
| label = "loader"; |
| reg = <0x00000000 0x00080000>; |
| read-only; |
| }; |
| partition@80000 { |
| label = "user"; |
| reg = <0x00080000 0x00580000>; |
| read-only; |
| }; |
| partition@600000 { |
| label = "flash"; |
| reg = <0x00600000 0x03a00000>; |
| }; |
| }; |
| }; |
| |
| &msiof0 { |
| pinctrl-0 = <&msiof0_pins>; |
| pinctrl-names = "default"; |
| |
| status = "okay"; |
| |
| pmic: pmic@0 { |
| compatible = "renesas,r2a11302ft"; |
| reg = <0>; |
| spi-max-frequency = <6000000>; |
| spi-cpol; |
| spi-cpha; |
| }; |
| }; |
| |
| &i2c2 { |
| pinctrl-0 = <&i2c2_pins>; |
| pinctrl-names = "default"; |
| |
| status = "okay"; |
| clock-frequency = <100000>; |
| |
| ak4643: codec@12 { |
| compatible = "asahi-kasei,ak4643"; |
| #sound-dai-cells = <0>; |
| reg = <0x12>; |
| }; |
| |
| composite-in@20 { |
| compatible = "adi,adv7180"; |
| reg = <0x20>; |
| remote = <&vin1>; |
| |
| port { |
| adv7180: endpoint { |
| bus-width = <8>; |
| remote-endpoint = <&vin1ep>; |
| }; |
| }; |
| }; |
| |
| hdmi@39 { |
| compatible = "adi,adv7511w"; |
| reg = <0x39>; |
| interrupt-parent = <&gpio3>; |
| interrupts = <29 IRQ_TYPE_LEVEL_LOW>; |
| |
| adi,input-depth = <8>; |
| adi,input-colorspace = "rgb"; |
| adi,input-clock = "1x"; |
| adi,input-style = <1>; |
| adi,input-justification = "evenly"; |
| |
| ports { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| port@0 { |
| reg = <0>; |
| adv7511_in: endpoint { |
| remote-endpoint = <&du_out_rgb>; |
| }; |
| }; |
| |
| port@1 { |
| reg = <1>; |
| adv7511_out: endpoint { |
| remote-endpoint = <&hdmi_con>; |
| }; |
| }; |
| }; |
| }; |
| |
| eeprom@50 { |
| compatible = "renesas,24c02"; |
| reg = <0x50>; |
| pagesize = <16>; |
| }; |
| }; |
| |
| &i2c6 { |
| status = "okay"; |
| clock-frequency = <100000>; |
| |
| pmic@58 { |
| compatible = "dlg,da9063"; |
| reg = <0x58>; |
| interrupt-parent = <&irqc0>; |
| interrupts = <2 IRQ_TYPE_LEVEL_LOW>; |
| interrupt-controller; |
| |
| rtc { |
| compatible = "dlg,da9063-rtc"; |
| }; |
| |
| wdt { |
| compatible = "dlg,da9063-watchdog"; |
| }; |
| }; |
| |
| vdd_dvfs: regulator@68 { |
| compatible = "dlg,da9210"; |
| reg = <0x68>; |
| interrupt-parent = <&irqc0>; |
| interrupts = <2 IRQ_TYPE_LEVEL_LOW>; |
| |
| regulator-min-microvolt = <1000000>; |
| regulator-max-microvolt = <1000000>; |
| regulator-boot-on; |
| regulator-always-on; |
| }; |
| }; |
| |
| &pci0 { |
| status = "okay"; |
| pinctrl-0 = <&usb0_pins>; |
| pinctrl-names = "default"; |
| }; |
| |
| &pci1 { |
| status = "okay"; |
| pinctrl-0 = <&usb1_pins>; |
| pinctrl-names = "default"; |
| }; |
| |
| &hsusb { |
| status = "okay"; |
| pinctrl-0 = <&usb0_pins>; |
| pinctrl-names = "default"; |
| renesas,enable-gpio = <&gpio5 31 GPIO_ACTIVE_HIGH>; |
| }; |
| |
| &usbphy { |
| status = "okay"; |
| }; |
| |
| &pcie_bus_clk { |
| status = "okay"; |
| }; |
| |
| &pciec { |
| status = "okay"; |
| }; |
| |
| &cpu0 { |
| cpu0-supply = <&vdd_dvfs>; |
| }; |
| |
| /* composite video input */ |
| &vin1 { |
| status = "okay"; |
| pinctrl-0 = <&vin1_pins>; |
| pinctrl-names = "default"; |
| |
| port { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| vin1ep: endpoint { |
| remote-endpoint = <&adv7180>; |
| bus-width = <8>; |
| }; |
| }; |
| }; |
| |
| &rcar_sound { |
| pinctrl-0 = <&sound_pins &sound_clk_pins>; |
| pinctrl-names = "default"; |
| |
| /* Single DAI */ |
| #sound-dai-cells = <0>; |
| |
| status = "okay"; |
| |
| rcar_sound,dai { |
| dai0 { |
| playback = <&ssi0 &src2 &dvc0>; |
| capture = <&ssi1 &src3 &dvc1>; |
| }; |
| }; |
| }; |
| |
| &ssi1 { |
| shared-pin; |
| }; |