155c68261SLad Prabhakar// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 255c68261SLad Prabhakar/* 355c68261SLad Prabhakar * Device Tree Source for the RZ/G2L SMARC SOM common parts 455c68261SLad Prabhakar * 555c68261SLad Prabhakar * Copyright (C) 2021 Renesas Electronics Corp. 655c68261SLad Prabhakar */ 755c68261SLad Prabhakar 8*a60a311cSBiju Das#include <dt-bindings/gpio/gpio.h> 903f7d78eSLad Prabhakar#include <dt-bindings/pinctrl/rzg2l-pinctrl.h> 1003f7d78eSLad Prabhakar 11*a60a311cSBiju Das/* SW1[2] should be at position 2/OFF to enable 64 GB eMMC */ 12*a60a311cSBiju Das#define EMMC 1 13*a60a311cSBiju Das 14*a60a311cSBiju Das/* 15*a60a311cSBiju Das * To enable uSD card on CN3, 16*a60a311cSBiju Das * SW1[2] should be at position 3/ON. 17*a60a311cSBiju Das * Disable eMMC by setting "#define EMMC 0" above. 18*a60a311cSBiju Das */ 19*a60a311cSBiju Das#define SDHI (!EMMC) 20*a60a311cSBiju Das 2155c68261SLad Prabhakar/ { 2255c68261SLad Prabhakar memory@48000000 { 2355c68261SLad Prabhakar device_type = "memory"; 2455c68261SLad Prabhakar /* first 128MB is reserved for secure area. */ 2555c68261SLad Prabhakar reg = <0x0 0x48000000 0x0 0x78000000>; 2655c68261SLad Prabhakar }; 27*a60a311cSBiju Das 28*a60a311cSBiju Das reg_1p8v: regulator0 { 29*a60a311cSBiju Das compatible = "regulator-fixed"; 30*a60a311cSBiju Das regulator-name = "fixed-1.8V"; 31*a60a311cSBiju Das regulator-min-microvolt = <1800000>; 32*a60a311cSBiju Das regulator-max-microvolt = <1800000>; 33*a60a311cSBiju Das regulator-boot-on; 34*a60a311cSBiju Das regulator-always-on; 35*a60a311cSBiju Das }; 36*a60a311cSBiju Das 37*a60a311cSBiju Das reg_3p3v: regulator1 { 38*a60a311cSBiju Das compatible = "regulator-fixed"; 39*a60a311cSBiju Das regulator-name = "fixed-3.3V"; 40*a60a311cSBiju Das regulator-min-microvolt = <3300000>; 41*a60a311cSBiju Das regulator-max-microvolt = <3300000>; 42*a60a311cSBiju Das regulator-boot-on; 43*a60a311cSBiju Das regulator-always-on; 44*a60a311cSBiju Das }; 45*a60a311cSBiju Das 46*a60a311cSBiju Das vccq_sdhi0: regulator-vccq-sdhi0 { 47*a60a311cSBiju Das compatible = "regulator-gpio"; 48*a60a311cSBiju Das 49*a60a311cSBiju Das regulator-name = "SDHI0 VccQ"; 50*a60a311cSBiju Das regulator-min-microvolt = <1800000>; 51*a60a311cSBiju Das regulator-max-microvolt = <3300000>; 52*a60a311cSBiju Das states = <3300000 1>, <1800000 0>; 53*a60a311cSBiju Das regulator-boot-on; 54*a60a311cSBiju Das gpios = <&pinctrl RZG2L_GPIO(39, 0) GPIO_ACTIVE_HIGH>; 55*a60a311cSBiju Das regulator-always-on; 56*a60a311cSBiju Das }; 5755c68261SLad Prabhakar}; 5855c68261SLad Prabhakar 5903f7d78eSLad Prabhakar&adc { 6003f7d78eSLad Prabhakar pinctrl-0 = <&adc_pins>; 6103f7d78eSLad Prabhakar pinctrl-names = "default"; 6203f7d78eSLad Prabhakar status = "okay"; 6303f7d78eSLad Prabhakar 6403f7d78eSLad Prabhakar /delete-node/ channel@6; 6503f7d78eSLad Prabhakar /delete-node/ channel@7; 6603f7d78eSLad Prabhakar}; 6703f7d78eSLad Prabhakar 6855c68261SLad Prabhakar&extal_clk { 6955c68261SLad Prabhakar clock-frequency = <24000000>; 7055c68261SLad Prabhakar}; 7103f7d78eSLad Prabhakar 7203f7d78eSLad Prabhakar&pinctrl { 7303f7d78eSLad Prabhakar adc_pins: adc { 7403f7d78eSLad Prabhakar pinmux = <RZG2L_PORT_PINMUX(9, 0, 2)>; /* ADC_TRG */ 7503f7d78eSLad Prabhakar }; 76*a60a311cSBiju Das 77*a60a311cSBiju Das gpio-sd0-pwr-en-hog { 78*a60a311cSBiju Das gpio-hog; 79*a60a311cSBiju Das gpios = <RZG2L_GPIO(4, 1) GPIO_ACTIVE_HIGH>; 80*a60a311cSBiju Das output-high; 81*a60a311cSBiju Das line-name = "gpio_sd0_pwr_en"; 8203f7d78eSLad Prabhakar }; 83*a60a311cSBiju Das 84*a60a311cSBiju Das /* 85*a60a311cSBiju Das * SD0 device selection is XOR between GPIO_SD0_DEV_SEL and SW1[2] 86*a60a311cSBiju Das * The below switch logic can be used to select the device between 87*a60a311cSBiju Das * eMMC and microSD, after setting GPIO_SD0_DEV_SEL to high in DT. 88*a60a311cSBiju Das * SW1[2] should be at position 2/OFF to enable 64 GB eMMC 89*a60a311cSBiju Das * SW1[2] should be at position 3/ON to enable uSD card CN3 90*a60a311cSBiju Das */ 91*a60a311cSBiju Das sd0-dev-sel-hog { 92*a60a311cSBiju Das gpio-hog; 93*a60a311cSBiju Das gpios = <RZG2L_GPIO(41, 1) GPIO_ACTIVE_HIGH>; 94*a60a311cSBiju Das output-high; 95*a60a311cSBiju Das line-name = "sd0_dev_sel"; 96*a60a311cSBiju Das }; 97*a60a311cSBiju Das 98*a60a311cSBiju Das sdhi0_emmc_pins: sd0emmc { 99*a60a311cSBiju Das sd0_emmc_data { 100*a60a311cSBiju Das pins = "SD0_DATA0", "SD0_DATA1", "SD0_DATA2", "SD0_DATA3", 101*a60a311cSBiju Das "SD0_DATA4", "SD0_DATA5", "SD0_DATA6", "SD0_DATA7"; 102*a60a311cSBiju Das power-source = <1800>; 103*a60a311cSBiju Das }; 104*a60a311cSBiju Das 105*a60a311cSBiju Das sd0_emmc_ctrl { 106*a60a311cSBiju Das pins = "SD0_CLK", "SD0_CMD"; 107*a60a311cSBiju Das power-source = <1800>; 108*a60a311cSBiju Das }; 109*a60a311cSBiju Das 110*a60a311cSBiju Das sd0_emmc_rst { 111*a60a311cSBiju Das pins = "SD0_RST#"; 112*a60a311cSBiju Das power-source = <1800>; 113*a60a311cSBiju Das }; 114*a60a311cSBiju Das }; 115*a60a311cSBiju Das 116*a60a311cSBiju Das sdhi0_pins: sd0 { 117*a60a311cSBiju Das sd0_data { 118*a60a311cSBiju Das pins = "SD0_DATA0", "SD0_DATA1", "SD0_DATA2", "SD0_DATA3"; 119*a60a311cSBiju Das power-source = <3300>; 120*a60a311cSBiju Das }; 121*a60a311cSBiju Das 122*a60a311cSBiju Das sd0_ctrl { 123*a60a311cSBiju Das pins = "SD0_CLK", "SD0_CMD"; 124*a60a311cSBiju Das power-source = <3300>; 125*a60a311cSBiju Das }; 126*a60a311cSBiju Das 127*a60a311cSBiju Das sd0_mux { 128*a60a311cSBiju Das pinmux = <RZG2L_PORT_PINMUX(47, 0, 2)>; /* SD0_CD */ 129*a60a311cSBiju Das }; 130*a60a311cSBiju Das }; 131*a60a311cSBiju Das 132*a60a311cSBiju Das sdhi0_pins_uhs: sd0_uhs { 133*a60a311cSBiju Das sd0_data_uhs { 134*a60a311cSBiju Das pins = "SD0_DATA0", "SD0_DATA1", "SD0_DATA2", "SD0_DATA3"; 135*a60a311cSBiju Das power-source = <1800>; 136*a60a311cSBiju Das }; 137*a60a311cSBiju Das 138*a60a311cSBiju Das sd0_ctrl_uhs { 139*a60a311cSBiju Das pins = "SD0_CLK", "SD0_CMD"; 140*a60a311cSBiju Das power-source = <1800>; 141*a60a311cSBiju Das }; 142*a60a311cSBiju Das 143*a60a311cSBiju Das sd0_mux_uhs { 144*a60a311cSBiju Das pinmux = <RZG2L_PORT_PINMUX(47, 0, 2)>; /* SD0_CD */ 145*a60a311cSBiju Das }; 146*a60a311cSBiju Das }; 147*a60a311cSBiju Das}; 148*a60a311cSBiju Das 149*a60a311cSBiju Das#if SDHI 150*a60a311cSBiju Das&sdhi0 { 151*a60a311cSBiju Das pinctrl-0 = <&sdhi0_pins>; 152*a60a311cSBiju Das pinctrl-1 = <&sdhi0_pins_uhs>; 153*a60a311cSBiju Das pinctrl-names = "default", "state_uhs"; 154*a60a311cSBiju Das 155*a60a311cSBiju Das vmmc-supply = <®_3p3v>; 156*a60a311cSBiju Das vqmmc-supply = <&vccq_sdhi0>; 157*a60a311cSBiju Das bus-width = <4>; 158*a60a311cSBiju Das sd-uhs-sdr50; 159*a60a311cSBiju Das sd-uhs-sdr104; 160*a60a311cSBiju Das status = "okay"; 161*a60a311cSBiju Das}; 162*a60a311cSBiju Das#endif 163*a60a311cSBiju Das 164*a60a311cSBiju Das#if EMMC 165*a60a311cSBiju Das&sdhi0 { 166*a60a311cSBiju Das pinctrl-0 = <&sdhi0_emmc_pins>; 167*a60a311cSBiju Das pinctrl-1 = <&sdhi0_emmc_pins>; 168*a60a311cSBiju Das pinctrl-names = "default", "state_uhs"; 169*a60a311cSBiju Das 170*a60a311cSBiju Das vmmc-supply = <®_3p3v>; 171*a60a311cSBiju Das vqmmc-supply = <®_1p8v>; 172*a60a311cSBiju Das bus-width = <8>; 173*a60a311cSBiju Das mmc-hs200-1_8v; 174*a60a311cSBiju Das non-removable; 175*a60a311cSBiju Das fixed-emmc-driver-type = <1>; 176*a60a311cSBiju Das status = "okay"; 177*a60a311cSBiju Das}; 178*a60a311cSBiju Das#endif 179