1cba59c25SWolfram Sang// SPDX-License-Identifier: GPL-2.0 252cb6607SVladimir Barinov/* 352cb6607SVladimir Barinov * Device Tree Source for the Kingfisher (ULCB extension) board 452cb6607SVladimir Barinov * 552cb6607SVladimir Barinov * Copyright (C) 2017 Renesas Electronics Corp. 652cb6607SVladimir Barinov * Copyright (C) 2017 Cogent Embedded, Inc. 752cb6607SVladimir Barinov */ 852cb6607SVladimir Barinov 980c07701SKuninori Morimoto/* 1080c07701SKuninori Morimoto * SSI-PCM3168A 1180c07701SKuninori Morimoto * aplay -D plughw:0,2 xxx.wav 1280c07701SKuninori Morimoto * arecord -D plughw:0,3 xxx.wav 1380c07701SKuninori Morimoto */ 1480c07701SKuninori Morimoto 1552cb6607SVladimir Barinov/ { 1652cb6607SVladimir Barinov aliases { 1752cb6607SVladimir Barinov serial1 = &hscif0; 18c6c816e2SVladimir Barinov serial2 = &scif1; 1952cb6607SVladimir Barinov }; 2080c07701SKuninori Morimoto 2180c07701SKuninori Morimoto clksndsel: clksndsel { 2280c07701SKuninori Morimoto #clock-cells = <0>; 2380c07701SKuninori Morimoto compatible = "gpio-mux-clock"; 2480c07701SKuninori Morimoto clocks = <&cs2000>, <&audio_clk_a>; /* clk8snd, clksnd */ 2580c07701SKuninori Morimoto select-gpios = <&gpio_exp_75 13 GPIO_ACTIVE_HIGH>; 2680c07701SKuninori Morimoto }; 2780c07701SKuninori Morimoto 2880c07701SKuninori Morimoto snd_3p3v: regulator-snd_3p3v { 2980c07701SKuninori Morimoto compatible = "regulator-fixed"; 3080c07701SKuninori Morimoto regulator-name = "snd-3.3v"; 3180c07701SKuninori Morimoto regulator-min-microvolt = <3300000>; 3280c07701SKuninori Morimoto regulator-max-microvolt = <3300000>; 3380c07701SKuninori Morimoto }; 3480c07701SKuninori Morimoto 3580c07701SKuninori Morimoto snd_vcc5v: regulator-snd_vcc5v { 3680c07701SKuninori Morimoto compatible = "regulator-fixed"; 3780c07701SKuninori Morimoto regulator-name = "snd-vcc5v"; 3880c07701SKuninori Morimoto regulator-min-microvolt = <5000000>; 3980c07701SKuninori Morimoto regulator-max-microvolt = <5000000>; 4080c07701SKuninori Morimoto }; 4195ff4aabSSpyridon Papageorgiou 4295ff4aabSSpyridon Papageorgiou wlan_en: regulator-wlan_en { 4395ff4aabSSpyridon Papageorgiou compatible = "regulator-fixed"; 4495ff4aabSSpyridon Papageorgiou regulator-name = "wlan-en-regulator"; 4595ff4aabSSpyridon Papageorgiou 4695ff4aabSSpyridon Papageorgiou regulator-min-microvolt = <3300000>; 4795ff4aabSSpyridon Papageorgiou regulator-max-microvolt = <3300000>; 4895ff4aabSSpyridon Papageorgiou 4995ff4aabSSpyridon Papageorgiou gpio = <&gpio_exp_74 4 GPIO_ACTIVE_HIGH>; 5095ff4aabSSpyridon Papageorgiou startup-delay-us = <70000>; 5195ff4aabSSpyridon Papageorgiou enable-active-high; 5295ff4aabSSpyridon Papageorgiou }; 5352cb6607SVladimir Barinov}; 5452cb6607SVladimir Barinov 55ba915c12SVladimir Barinov&can0 { 56ba915c12SVladimir Barinov pinctrl-0 = <&can0_pins>; 57ba915c12SVladimir Barinov pinctrl-names = "default"; 58ba915c12SVladimir Barinov status = "okay"; 59ba915c12SVladimir Barinov}; 60ba915c12SVladimir Barinov 61ba915c12SVladimir Barinov&can1 { 62ba915c12SVladimir Barinov pinctrl-0 = <&can1_pins>; 63ba915c12SVladimir Barinov pinctrl-names = "default"; 64ba915c12SVladimir Barinov status = "okay"; 65ba915c12SVladimir Barinov}; 66ba915c12SVladimir Barinov 6736bd8e3eSVladimir Barinov&ehci0 { 68499468cfSVladimir Barinov dr_mode = "otg"; 6936bd8e3eSVladimir Barinov status = "okay"; 7036bd8e3eSVladimir Barinov}; 7136bd8e3eSVladimir Barinov 7252cb6607SVladimir Barinov&hscif0 { 7352cb6607SVladimir Barinov pinctrl-0 = <&hscif0_pins>; 7452cb6607SVladimir Barinov pinctrl-names = "default"; 7552cb6607SVladimir Barinov uart-has-rtscts; 7652cb6607SVladimir Barinov 7752cb6607SVladimir Barinov status = "okay"; 7852cb6607SVladimir Barinov}; 7952cb6607SVladimir Barinov 80da9c3629SVladimir Barinov&hsusb { 81499468cfSVladimir Barinov dr_mode = "otg"; 82da9c3629SVladimir Barinov status = "okay"; 83da9c3629SVladimir Barinov}; 84da9c3629SVladimir Barinov 851189d1d4SVladimir Barinov&i2c2 { 8680c07701SKuninori Morimoto /* U11 */ 871189d1d4SVladimir Barinov gpio_exp_74: gpio@74 { 881189d1d4SVladimir Barinov compatible = "ti,tca9539"; 891189d1d4SVladimir Barinov reg = <0x74>; 901189d1d4SVladimir Barinov gpio-controller; 911189d1d4SVladimir Barinov #gpio-cells = <2>; 921189d1d4SVladimir Barinov interrupt-controller; 931189d1d4SVladimir Barinov interrupt-parent = <&gpio6>; 941189d1d4SVladimir Barinov interrupts = <8 IRQ_TYPE_EDGE_FALLING>; 954339306aSVladimir Barinov 9680c07701SKuninori Morimoto audio_out_off { 9780c07701SKuninori Morimoto gpio-hog; 9880c07701SKuninori Morimoto gpios = <0 GPIO_ACTIVE_HIGH>; /* P00 */ 9980c07701SKuninori Morimoto output-high; 10080c07701SKuninori Morimoto line-name = "Audio_Out_OFF"; 10180c07701SKuninori Morimoto }; 10280c07701SKuninori Morimoto 10395ff4aabSSpyridon Papageorgiou sd-wifi-mux { 10495ff4aabSSpyridon Papageorgiou gpio-hog; 10595ff4aabSSpyridon Papageorgiou gpios = <5 GPIO_ACTIVE_HIGH>; 10695ff4aabSSpyridon Papageorgiou output-low; /* Connect WL1837 */ 10795ff4aabSSpyridon Papageorgiou line-name = "SD WiFi mux"; 10895ff4aabSSpyridon Papageorgiou }; 10995ff4aabSSpyridon Papageorgiou 1104339306aSVladimir Barinov hub_pwen { 1114339306aSVladimir Barinov gpio-hog; 1124339306aSVladimir Barinov gpios = <6 GPIO_ACTIVE_HIGH>; 1134339306aSVladimir Barinov output-high; 1144339306aSVladimir Barinov line-name = "HUB pwen"; 1154339306aSVladimir Barinov }; 1164339306aSVladimir Barinov 1174339306aSVladimir Barinov hub_rst { 1184339306aSVladimir Barinov gpio-hog; 1194339306aSVladimir Barinov gpios = <7 GPIO_ACTIVE_HIGH>; 1204339306aSVladimir Barinov output-high; 1214339306aSVladimir Barinov line-name = "HUB rst"; 1224339306aSVladimir Barinov }; 12380785024SVladimir Barinov 12480785024SVladimir Barinov otg_offvbusn { 12580785024SVladimir Barinov gpio-hog; 12680785024SVladimir Barinov gpios = <8 GPIO_ACTIVE_HIGH>; 12780785024SVladimir Barinov output-low; 12880785024SVladimir Barinov line-name = "OTG OFFVBUSn"; 12980785024SVladimir Barinov }; 13080785024SVladimir Barinov 13180785024SVladimir Barinov otg_extlpn { 13280785024SVladimir Barinov gpio-hog; 13380785024SVladimir Barinov gpios = <9 GPIO_ACTIVE_HIGH>; 13480785024SVladimir Barinov output-high; 13580785024SVladimir Barinov line-name = "OTG EXTLPn"; 13680785024SVladimir Barinov }; 13780c07701SKuninori Morimoto 13880c07701SKuninori Morimoto snd_rst { 13980c07701SKuninori Morimoto gpio-hog; 14080c07701SKuninori Morimoto gpios = <15 GPIO_ACTIVE_HIGH>; /* P17 */ 14180c07701SKuninori Morimoto output-high; 14280c07701SKuninori Morimoto line-name = "SND_RST"; 14380c07701SKuninori Morimoto }; 1441189d1d4SVladimir Barinov }; 1451189d1d4SVladimir Barinov 14680c07701SKuninori Morimoto /* U5 */ 1471189d1d4SVladimir Barinov gpio_exp_75: gpio@75 { 1481189d1d4SVladimir Barinov compatible = "ti,tca9539"; 1491189d1d4SVladimir Barinov reg = <0x75>; 1501189d1d4SVladimir Barinov gpio-controller; 1511189d1d4SVladimir Barinov #gpio-cells = <2>; 1521189d1d4SVladimir Barinov interrupt-controller; 1531189d1d4SVladimir Barinov interrupt-parent = <&gpio6>; 1541189d1d4SVladimir Barinov interrupts = <4 IRQ_TYPE_EDGE_FALLING>; 1551189d1d4SVladimir Barinov }; 156c6f9cbe3SVladimir Barinov 157c6f9cbe3SVladimir Barinov i2cswitch2: i2c-switch@71 { 158c6f9cbe3SVladimir Barinov compatible = "nxp,pca9548"; 159c6f9cbe3SVladimir Barinov #address-cells = <1>; 160c6f9cbe3SVladimir Barinov #size-cells = <0>; 161c6f9cbe3SVladimir Barinov reg = <0x71>; 162c6f9cbe3SVladimir Barinov reset-gpios = <&gpio5 3 GPIO_ACTIVE_LOW>; 16380c07701SKuninori Morimoto 16480c07701SKuninori Morimoto /* Audio_SDA, Audio_SCL */ 16580c07701SKuninori Morimoto i2c@7 { 16680c07701SKuninori Morimoto #address-cells = <1>; 16780c07701SKuninori Morimoto #size-cells = <0>; 16880c07701SKuninori Morimoto reg = <7>; 16980c07701SKuninori Morimoto 17080c07701SKuninori Morimoto pcm3168a: audio-codec@44 { 17180c07701SKuninori Morimoto #sound-dai-cells = <0>; 17280c07701SKuninori Morimoto compatible = "ti,pcm3168a"; 17380c07701SKuninori Morimoto reg = <0x44>; 17480c07701SKuninori Morimoto clocks = <&clksndsel>; 17580c07701SKuninori Morimoto clock-names = "scki"; 17680c07701SKuninori Morimoto 17780c07701SKuninori Morimoto VDD1-supply = <&snd_3p3v>; 17880c07701SKuninori Morimoto VDD2-supply = <&snd_3p3v>; 17980c07701SKuninori Morimoto VCCAD1-supply = <&snd_vcc5v>; 18080c07701SKuninori Morimoto VCCAD2-supply = <&snd_vcc5v>; 18180c07701SKuninori Morimoto VCCDA1-supply = <&snd_vcc5v>; 18280c07701SKuninori Morimoto VCCDA2-supply = <&snd_vcc5v>; 18380c07701SKuninori Morimoto 18480c07701SKuninori Morimoto ports { 18580c07701SKuninori Morimoto #address-cells = <1>; 18680c07701SKuninori Morimoto #size-cells = <0>; 18780c07701SKuninori Morimoto mclk-fs = <512>; 18880c07701SKuninori Morimoto port@0 { 18980c07701SKuninori Morimoto reg = <0>; 19080c07701SKuninori Morimoto pcm3168a_endpoint_p: endpoint { 19180c07701SKuninori Morimoto remote-endpoint = <&rsnd_for_pcm3168a_play>; 19280c07701SKuninori Morimoto clocks = <&clksndsel>; 19380c07701SKuninori Morimoto }; 19480c07701SKuninori Morimoto }; 19580c07701SKuninori Morimoto port@1 { 19680c07701SKuninori Morimoto reg = <1>; 19780c07701SKuninori Morimoto pcm3168a_endpoint_c: endpoint { 19880c07701SKuninori Morimoto remote-endpoint = <&rsnd_for_pcm3168a_capture>; 19980c07701SKuninori Morimoto clocks = <&clksndsel>; 20080c07701SKuninori Morimoto }; 20180c07701SKuninori Morimoto }; 20280c07701SKuninori Morimoto }; 20380c07701SKuninori Morimoto }; 20480c07701SKuninori Morimoto }; 205c6f9cbe3SVladimir Barinov }; 2061189d1d4SVladimir Barinov}; 2071189d1d4SVladimir Barinov 2080f9c47b2SVladimir Barinov&i2c4 { 2090f9c47b2SVladimir Barinov gpio_exp_76: gpio@76 { 2100f9c47b2SVladimir Barinov compatible = "ti,tca9539"; 2110f9c47b2SVladimir Barinov reg = <0x76>; 2120f9c47b2SVladimir Barinov gpio-controller; 2130f9c47b2SVladimir Barinov #gpio-cells = <2>; 2140f9c47b2SVladimir Barinov interrupt-controller; 2150f9c47b2SVladimir Barinov interrupt-parent = <&gpio7>; 2160f9c47b2SVladimir Barinov interrupts = <3 IRQ_TYPE_EDGE_FALLING>; 2170f9c47b2SVladimir Barinov }; 2180f9c47b2SVladimir Barinov 2190f9c47b2SVladimir Barinov gpio_exp_77: gpio@77 { 2200f9c47b2SVladimir Barinov compatible = "ti,tca9539"; 2210f9c47b2SVladimir Barinov reg = <0x77>; 2220f9c47b2SVladimir Barinov gpio-controller; 2230f9c47b2SVladimir Barinov #gpio-cells = <2>; 2240f9c47b2SVladimir Barinov interrupt-controller; 2250f9c47b2SVladimir Barinov interrupt-parent = <&gpio5>; 2260f9c47b2SVladimir Barinov interrupts = <9 IRQ_TYPE_EDGE_FALLING>; 2270f9c47b2SVladimir Barinov }; 2286d5fcdd3SVladimir Barinov 2296d5fcdd3SVladimir Barinov i2cswitch4: i2c-switch@71 { 2306d5fcdd3SVladimir Barinov compatible = "nxp,pca9548"; 2316d5fcdd3SVladimir Barinov #address-cells = <1>; 2326d5fcdd3SVladimir Barinov #size-cells = <0>; 2336d5fcdd3SVladimir Barinov reg = <0x71>; 2346d5fcdd3SVladimir Barinov reset-gpios = <&gpio3 15 GPIO_ACTIVE_LOW>; 2356d5fcdd3SVladimir Barinov }; 2360f9c47b2SVladimir Barinov}; 2370f9c47b2SVladimir Barinov 23836bd8e3eSVladimir Barinov&ohci0 { 239499468cfSVladimir Barinov dr_mode = "otg"; 24036bd8e3eSVladimir Barinov status = "okay"; 24136bd8e3eSVladimir Barinov}; 24236bd8e3eSVladimir Barinov 243e0304a36SVladimir Barinov&pcie_bus_clk { 244e0304a36SVladimir Barinov clock-frequency = <100000000>; 245e0304a36SVladimir Barinov}; 246e0304a36SVladimir Barinov 247e0304a36SVladimir Barinov&pciec0 { 248e0304a36SVladimir Barinov status = "okay"; 249e0304a36SVladimir Barinov}; 250e0304a36SVladimir Barinov 251e0304a36SVladimir Barinov&pciec1 { 252e0304a36SVladimir Barinov status = "okay"; 253e0304a36SVladimir Barinov}; 254e0304a36SVladimir Barinov 25552cb6607SVladimir Barinov&pfc { 256ba915c12SVladimir Barinov can0_pins: can0 { 257ba915c12SVladimir Barinov groups = "can0_data_a"; 258ba915c12SVladimir Barinov function = "can0"; 259ba915c12SVladimir Barinov }; 260ba915c12SVladimir Barinov 261ba915c12SVladimir Barinov can1_pins: can1 { 262ba915c12SVladimir Barinov groups = "can1_data"; 263ba915c12SVladimir Barinov function = "can1"; 264ba915c12SVladimir Barinov }; 265ba915c12SVladimir Barinov 26652cb6607SVladimir Barinov hscif0_pins: hscif0 { 26752cb6607SVladimir Barinov groups = "hscif0_data", "hscif0_ctrl"; 26852cb6607SVladimir Barinov function = "hscif0"; 26952cb6607SVladimir Barinov }; 270c6c816e2SVladimir Barinov 271c6c816e2SVladimir Barinov scif1_pins: scif1 { 272c6c816e2SVladimir Barinov groups = "scif1_data_b", "scif1_ctrl"; 273c6c816e2SVladimir Barinov function = "scif1"; 274c6c816e2SVladimir Barinov }; 27580785024SVladimir Barinov 27695ff4aabSSpyridon Papageorgiou sdhi3_pins: sdhi3 { 27795ff4aabSSpyridon Papageorgiou groups = "sdhi3_data4", "sdhi3_ctrl"; 27895ff4aabSSpyridon Papageorgiou function = "sdhi3"; 27995ff4aabSSpyridon Papageorgiou power-source = <3300>; 28095ff4aabSSpyridon Papageorgiou }; 28195ff4aabSSpyridon Papageorgiou 28280785024SVladimir Barinov usb0_pins: usb0 { 28380785024SVladimir Barinov groups = "usb0"; 28480785024SVladimir Barinov function = "usb0"; 28580785024SVladimir Barinov }; 28680c07701SKuninori Morimoto 28780c07701SKuninori Morimoto sound_pcm_pins: sound-pcm { 28880c07701SKuninori Morimoto groups = "ssi349_ctrl", "ssi3_data", "ssi4_data"; 28980c07701SKuninori Morimoto function = "ssi"; 29080c07701SKuninori Morimoto }; 291c6c816e2SVladimir Barinov}; 292c6c816e2SVladimir Barinov 293c6c816e2SVladimir Barinov&scif1 { 294c6c816e2SVladimir Barinov pinctrl-0 = <&scif1_pins>; 295c6c816e2SVladimir Barinov pinctrl-names = "default"; 296c6c816e2SVladimir Barinov uart-has-rtscts; 297c6c816e2SVladimir Barinov 298c6c816e2SVladimir Barinov status = "okay"; 29952cb6607SVladimir Barinov}; 300af758116SVladimir Barinov 30195ff4aabSSpyridon Papageorgiou&sdhi3 { 30295ff4aabSSpyridon Papageorgiou pinctrl-0 = <&sdhi3_pins>; 30395ff4aabSSpyridon Papageorgiou pinctrl-names = "default"; 30495ff4aabSSpyridon Papageorgiou 30595ff4aabSSpyridon Papageorgiou vmmc-supply = <&wlan_en>; 30695ff4aabSSpyridon Papageorgiou vqmmc-supply = <&wlan_en>; 30795ff4aabSSpyridon Papageorgiou bus-width = <4>; 30895ff4aabSSpyridon Papageorgiou no-1-8-v; 30995ff4aabSSpyridon Papageorgiou non-removable; 31095ff4aabSSpyridon Papageorgiou cap-power-off-card; 31195ff4aabSSpyridon Papageorgiou keep-power-in-suspend; 31295ff4aabSSpyridon Papageorgiou max-frequency = <26000000>; 31395ff4aabSSpyridon Papageorgiou status = "okay"; 31495ff4aabSSpyridon Papageorgiou 31595ff4aabSSpyridon Papageorgiou #address-cells = <1>; 31695ff4aabSSpyridon Papageorgiou #size-cells = <0>; 31795ff4aabSSpyridon Papageorgiou wlcore: wlcore@2 { 31895ff4aabSSpyridon Papageorgiou compatible = "ti,wl1837"; 31995ff4aabSSpyridon Papageorgiou reg = <2>; 32095ff4aabSSpyridon Papageorgiou interrupt-parent = <&gpio1>; 32195ff4aabSSpyridon Papageorgiou interrupts = <25 IRQ_TYPE_EDGE_FALLING>; 32295ff4aabSSpyridon Papageorgiou }; 32395ff4aabSSpyridon Papageorgiou}; 32495ff4aabSSpyridon Papageorgiou 32580785024SVladimir Barinov&usb2_phy0 { 32680785024SVladimir Barinov pinctrl-0 = <&usb0_pins>; 32780785024SVladimir Barinov pinctrl-names = "default"; 32880785024SVladimir Barinov 32980785024SVladimir Barinov status = "okay"; 33080785024SVladimir Barinov}; 33180785024SVladimir Barinov 332af758116SVladimir Barinov&xhci0 { 333af758116SVladimir Barinov status = "okay"; 334af758116SVladimir Barinov}; 33580c07701SKuninori Morimoto 33680c07701SKuninori Morimoto&sound_card { 33780c07701SKuninori Morimoto dais = <&rsnd_port0 /* ak4613 */ 33880c07701SKuninori Morimoto &rsnd_port1 /* HDMI0 */ 33980c07701SKuninori Morimoto &rsnd_port2 /* pcm3168a playback */ 34080c07701SKuninori Morimoto &rsnd_port3 /* pcm3168a capture */ 34180c07701SKuninori Morimoto >; 34280c07701SKuninori Morimoto}; 34380c07701SKuninori Morimoto 34480c07701SKuninori Morimoto&rcar_sound { 34580c07701SKuninori Morimoto pinctrl-0 = <&sound_pins 34680c07701SKuninori Morimoto &sound_clk_pins 34780c07701SKuninori Morimoto &sound_pcm_pins>; 34880c07701SKuninori Morimoto 34980c07701SKuninori Morimoto ports { 35080c07701SKuninori Morimoto /* rsnd_port0/1 are on salvator-common */ 35180c07701SKuninori Morimoto rsnd_port2: port@2 { 35280c07701SKuninori Morimoto reg = <2>; 35380c07701SKuninori Morimoto rsnd_for_pcm3168a_play: endpoint { 35480c07701SKuninori Morimoto remote-endpoint = <&pcm3168a_endpoint_p>; 35580c07701SKuninori Morimoto 35680c07701SKuninori Morimoto dai-format = "i2s"; 35780c07701SKuninori Morimoto bitclock-master = <&rsnd_for_pcm3168a_play>; 35880c07701SKuninori Morimoto frame-master = <&rsnd_for_pcm3168a_play>; 35980c07701SKuninori Morimoto dai-tdm-slot-num = <8>; 36080c07701SKuninori Morimoto 36180c07701SKuninori Morimoto playback = <&ssi3>; 36280c07701SKuninori Morimoto }; 36380c07701SKuninori Morimoto }; 36480c07701SKuninori Morimoto rsnd_port3: port@3 { 36580c07701SKuninori Morimoto reg = <3>; 36680c07701SKuninori Morimoto rsnd_for_pcm3168a_capture: endpoint { 36780c07701SKuninori Morimoto remote-endpoint = <&pcm3168a_endpoint_c>; 36880c07701SKuninori Morimoto 36980c07701SKuninori Morimoto dai-format = "i2s"; 37080c07701SKuninori Morimoto bitclock-master = <&rsnd_for_pcm3168a_capture>; 37180c07701SKuninori Morimoto frame-master = <&rsnd_for_pcm3168a_capture>; 37280c07701SKuninori Morimoto dai-tdm-slot-num = <6>; 37380c07701SKuninori Morimoto 37480c07701SKuninori Morimoto capture = <&ssi4>; 37580c07701SKuninori Morimoto }; 37680c07701SKuninori Morimoto }; 37780c07701SKuninori Morimoto }; 37880c07701SKuninori Morimoto}; 37980c07701SKuninori Morimoto 38080c07701SKuninori Morimoto&ssi4 { 38180c07701SKuninori Morimoto shared-pin; 38280c07701SKuninori Morimoto}; 383