1*4882a593Smuzhiyun// SPDX-License-Identifier: (GPL-2.0+ OR MIT) 2*4882a593Smuzhiyun/* 3*4882a593Smuzhiyun * Copyright (c) 2017 Andreas Färber 4*4882a593Smuzhiyun */ 5*4882a593Smuzhiyun 6*4882a593Smuzhiyun/dts-v1/; 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun#include "s900.dtsi" 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun/ { 11*4882a593Smuzhiyun compatible = "ucrobotics,bubblegum-96", "actions,s900"; 12*4882a593Smuzhiyun model = "Bubblegum-96"; 13*4882a593Smuzhiyun 14*4882a593Smuzhiyun aliases { 15*4882a593Smuzhiyun mmc0 = &mmc0; 16*4882a593Smuzhiyun mmc1 = &mmc1; 17*4882a593Smuzhiyun mmc2 = &mmc2; 18*4882a593Smuzhiyun serial5 = &uart5; 19*4882a593Smuzhiyun }; 20*4882a593Smuzhiyun 21*4882a593Smuzhiyun chosen { 22*4882a593Smuzhiyun stdout-path = "serial5:115200n8"; 23*4882a593Smuzhiyun }; 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun memory@0 { 26*4882a593Smuzhiyun device_type = "memory"; 27*4882a593Smuzhiyun reg = <0x0 0x0 0x0 0x80000000>; 28*4882a593Smuzhiyun }; 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun /* Fixed regulator used in the absence of PMIC */ 31*4882a593Smuzhiyun vcc_3v1: vcc-3v1 { 32*4882a593Smuzhiyun compatible = "regulator-fixed"; 33*4882a593Smuzhiyun regulator-name = "fixed-3.1V"; 34*4882a593Smuzhiyun regulator-min-microvolt = <3100000>; 35*4882a593Smuzhiyun regulator-max-microvolt = <3100000>; 36*4882a593Smuzhiyun regulator-always-on; 37*4882a593Smuzhiyun }; 38*4882a593Smuzhiyun 39*4882a593Smuzhiyun /* Fixed regulator used in the absence of PMIC */ 40*4882a593Smuzhiyun sd_vcc: sd-vcc { 41*4882a593Smuzhiyun compatible = "regulator-fixed"; 42*4882a593Smuzhiyun regulator-name = "fixed-3.1V"; 43*4882a593Smuzhiyun regulator-min-microvolt = <3100000>; 44*4882a593Smuzhiyun regulator-max-microvolt = <3100000>; 45*4882a593Smuzhiyun regulator-always-on; 46*4882a593Smuzhiyun }; 47*4882a593Smuzhiyun}; 48*4882a593Smuzhiyun 49*4882a593Smuzhiyun&i2c0 { 50*4882a593Smuzhiyun status = "disabled"; 51*4882a593Smuzhiyun pinctrl-names = "default"; 52*4882a593Smuzhiyun pinctrl-0 = <&i2c0_default>; 53*4882a593Smuzhiyun}; 54*4882a593Smuzhiyun 55*4882a593Smuzhiyun&i2c1 { 56*4882a593Smuzhiyun status = "okay"; 57*4882a593Smuzhiyun pinctrl-names = "default"; 58*4882a593Smuzhiyun pinctrl-0 = <&i2c1_default>; 59*4882a593Smuzhiyun}; 60*4882a593Smuzhiyun 61*4882a593Smuzhiyun&i2c2 { 62*4882a593Smuzhiyun status = "okay"; 63*4882a593Smuzhiyun pinctrl-names = "default"; 64*4882a593Smuzhiyun pinctrl-0 = <&i2c2_default>; 65*4882a593Smuzhiyun}; 66*4882a593Smuzhiyun 67*4882a593Smuzhiyun/* 68*4882a593Smuzhiyun * GPIO name legend: proper name = the GPIO line is used as GPIO 69*4882a593Smuzhiyun * NC = not connected (pin out but not routed from the chip to 70*4882a593Smuzhiyun * anything the board) 71*4882a593Smuzhiyun * "[PER]" = pin is muxed for [peripheral] (not GPIO) 72*4882a593Smuzhiyun * LSEC = Low Speed External Connector 73*4882a593Smuzhiyun * HSEC = High Speed External Connector 74*4882a593Smuzhiyun * 75*4882a593Smuzhiyun * Line names are taken from the schematic "Schematics Bubblegum96" 76*4882a593Smuzhiyun * version v1.0 77*4882a593Smuzhiyun * 78*4882a593Smuzhiyun * For the lines routed to the external connectors the 79*4882a593Smuzhiyun * lines are named after the 96Boards CE Specification 1.0, 80*4882a593Smuzhiyun * Appendix "Expansion Connector Signal Description". 81*4882a593Smuzhiyun * 82*4882a593Smuzhiyun * When the 96Boards naming of a line and the schematic name of 83*4882a593Smuzhiyun * the same line are in conflict, the 96Boards specification 84*4882a593Smuzhiyun * takes precedence, which means that the external UART on the 85*4882a593Smuzhiyun * LSEC is named UART0 while the schematic and SoC names this 86*4882a593Smuzhiyun * UART2. Only exception is the I2C lines for which the schematic 87*4882a593Smuzhiyun * naming has been preferred. This is only for the informational 88*4882a593Smuzhiyun * lines i.e. "[FOO]", the GPIO named lines "GPIO-A" thru "GPIO-L" 89*4882a593Smuzhiyun * are the only ones actually used for GPIO. 90*4882a593Smuzhiyun */ 91*4882a593Smuzhiyun 92*4882a593Smuzhiyun&pinctrl { 93*4882a593Smuzhiyun gpio-line-names = 94*4882a593Smuzhiyun "GPIO-A", /* GPIO_0, LSEC pin 23 */ 95*4882a593Smuzhiyun "GPIO-B", /* GPIO_1, LSEC pin 24 */ 96*4882a593Smuzhiyun "GPIO-C", /* GPIO_2, LSEC pin 25 */ 97*4882a593Smuzhiyun "GPIO-D", /* GPIO_3, LSEC pin 26 */ 98*4882a593Smuzhiyun "GPIO-E", /* GPIO_4, LSEC pin 27 */ 99*4882a593Smuzhiyun "GPIO-F", /* GPIO_5, LSEC pin 28 */ 100*4882a593Smuzhiyun "GPIO-G", /* GPIO_6, LSEC pin 29 */ 101*4882a593Smuzhiyun "GPIO-H", /* GPIO_7, LSEC pin 30 */ 102*4882a593Smuzhiyun "GPIO-I", /* GPIO_8, LSEC pin 31 */ 103*4882a593Smuzhiyun "GPIO-J", /* GPIO_9, LSEC pin 32 */ 104*4882a593Smuzhiyun "NC", /* GPIO_10 */ 105*4882a593Smuzhiyun "NC", /* GPIO_11 */ 106*4882a593Smuzhiyun "SIRQ2_1V8", /* GPIO_12 */ 107*4882a593Smuzhiyun "PCM0_OUT", /* GPIO_13 */ 108*4882a593Smuzhiyun "WIFI_LED", /* GPIO_14 */ 109*4882a593Smuzhiyun "PCM0_SYNC", /* GPIO_15 */ 110*4882a593Smuzhiyun "PCM0_CLK", /* GPIO_16 */ 111*4882a593Smuzhiyun "PCM0_IN", /* GPIO_17 */ 112*4882a593Smuzhiyun "BT_LED", /* GPIO_18 */ 113*4882a593Smuzhiyun "LED0", /* GPIO_19 */ 114*4882a593Smuzhiyun "LED1", /* GPIO_20 */ 115*4882a593Smuzhiyun "JTAG_TCK", /* GPIO_21 */ 116*4882a593Smuzhiyun "JTAG_TMS", /* GPIO_22 */ 117*4882a593Smuzhiyun "JTAG_TDI", /* GPIO_23 */ 118*4882a593Smuzhiyun "JTAG_TDO", /* GPIO_24 */ 119*4882a593Smuzhiyun "[UART1_RxD]", /* GPIO_25, LSEC pin 13 */ 120*4882a593Smuzhiyun "NC", /* GPIO_26 */ 121*4882a593Smuzhiyun "[UART1_TxD]", /* GPIO_27, LSEC pin 11 */ 122*4882a593Smuzhiyun "SD0_D0", /* GPIO_28 */ 123*4882a593Smuzhiyun "SD0_D1", /* GPIO_29 */ 124*4882a593Smuzhiyun "SD0_D2", /* GPIO_30 */ 125*4882a593Smuzhiyun "SD0_D3", /* GPIO_31 */ 126*4882a593Smuzhiyun "SD1_D0", /* GPIO_32 */ 127*4882a593Smuzhiyun "SD1_D1", /* GPIO_33 */ 128*4882a593Smuzhiyun "SD1_D2", /* GPIO_34 */ 129*4882a593Smuzhiyun "SD1_D3", /* GPIO_35 */ 130*4882a593Smuzhiyun "SD0_CMD", /* GPIO_36 */ 131*4882a593Smuzhiyun "SD0_CLK", /* GPIO_37 */ 132*4882a593Smuzhiyun "SD1_CMD", /* GPIO_38 */ 133*4882a593Smuzhiyun "SD1_CLK", /* GPIO_39 */ 134*4882a593Smuzhiyun "SPI0_SCLK", /* GPIO_40, LSEC pin 8 */ 135*4882a593Smuzhiyun "SPI0_CS", /* GPIO_41, LSEC pin 12 */ 136*4882a593Smuzhiyun "SPI0_DIN", /* GPIO_42, LSEC pin 10 */ 137*4882a593Smuzhiyun "SPI0_DOUT", /* GPIO_43, LSEC pin 14 */ 138*4882a593Smuzhiyun "I2C5_SDATA", /* GPIO_44, HSEC pin 36 */ 139*4882a593Smuzhiyun "I2C5_SCLK", /* GPIO_45, HSEC pin 38 */ 140*4882a593Smuzhiyun "UART0_RX", /* GPIO_46, LSEC pin 7 */ 141*4882a593Smuzhiyun "UART0_TX", /* GPIO_47, LSEC pin 5 */ 142*4882a593Smuzhiyun "UART0_RTSB", /* GPIO_48, LSEC pin 9 */ 143*4882a593Smuzhiyun "UART0_CTSB", /* GPIO_49, LSEC pin 3 */ 144*4882a593Smuzhiyun "I2C4_SCLK", /* GPIO_50, HSEC pin 32 */ 145*4882a593Smuzhiyun "I2C4_SDATA", /* GPIO_51, HSEC pin 34 */ 146*4882a593Smuzhiyun "I2C0_SCLK", /* GPIO_52 */ 147*4882a593Smuzhiyun "I2C0_SDATA", /* GPIO_53 */ 148*4882a593Smuzhiyun "I2C1_SCLK", /* GPIO_54, LSEC pin 15 */ 149*4882a593Smuzhiyun "I2C1_SDATA", /* GPIO_55, LSEC pin 17 */ 150*4882a593Smuzhiyun "I2C2_SCLK", /* GPIO_56, LSEC pin 19 */ 151*4882a593Smuzhiyun "I2C2_SDATA", /* GPIO_57, LSEC pin 21 */ 152*4882a593Smuzhiyun "CSI0_DN0", /* GPIO_58, HSEC pin 10 */ 153*4882a593Smuzhiyun "CSI0_DP0", /* GPIO_59, HSEC pin 8 */ 154*4882a593Smuzhiyun "CSI0_DN1", /* GPIO_60, HSEC pin 16 */ 155*4882a593Smuzhiyun "CSI0_DP1", /* GPIO_61, HSEC pin 14 */ 156*4882a593Smuzhiyun "CSI0_CN", /* GPIO_62, HSEC pin 4 */ 157*4882a593Smuzhiyun "CSI0_CP", /* GPIO_63, HSEC pin 2 */ 158*4882a593Smuzhiyun "CSI0_DN2", /* GPIO_64, HSEC pin 22 */ 159*4882a593Smuzhiyun "CSI0_DP2", /* GPIO_65, HSEC pin 20 */ 160*4882a593Smuzhiyun "CSI0_DN3", /* GPIO_66, HSEC pin 28 */ 161*4882a593Smuzhiyun "CSI0_DP3", /* GPIO_67, HSEC pin 26 */ 162*4882a593Smuzhiyun "[CLK0]", /* GPIO_68, HSEC pin 15 */ 163*4882a593Smuzhiyun "CSI1_DN0", /* GPIO_69, HSEC pin 44 */ 164*4882a593Smuzhiyun "CSI1_DP0", /* GPIO_70, HSEC pin 42 */ 165*4882a593Smuzhiyun "CSI1_DN1", /* GPIO_71, HSEC pin 50 */ 166*4882a593Smuzhiyun "CSI1_DP1", /* GPIO_72, HSEC pin 48 */ 167*4882a593Smuzhiyun "CSI1_CN", /* GPIO_73, HSEC pin 56 */ 168*4882a593Smuzhiyun "CSI1_CP", /* GPIO_74, HSEC pin 54 */ 169*4882a593Smuzhiyun "[CLK1]", /* GPIO_75, HSEC pin 17 */ 170*4882a593Smuzhiyun "[GPIOD0]", /* GPIO_76 */ 171*4882a593Smuzhiyun "[GPIOD1]", /* GPIO_77 */ 172*4882a593Smuzhiyun "BT_RST_N", /* GPIO_78 */ 173*4882a593Smuzhiyun "EXT_DC_EN", /* GPIO_79 */ 174*4882a593Smuzhiyun "[PCM_DI]", /* GPIO_80, LSEC pin 22 */ 175*4882a593Smuzhiyun "[PCM_DO]", /* GPIO_81, LSEC pin 20 */ 176*4882a593Smuzhiyun "[PCM_CLK]", /* GPIO_82, LSEC pin 18 */ 177*4882a593Smuzhiyun "[PCM_FS]", /* GPIO_83, LSEC pin 16 */ 178*4882a593Smuzhiyun "WAKE_BT", /* GPIO_84 */ 179*4882a593Smuzhiyun "WL_REG_ON", /* GPIO_85 */ 180*4882a593Smuzhiyun "NC", /* GPIO_86 */ 181*4882a593Smuzhiyun "NC", /* GPIO_87 */ 182*4882a593Smuzhiyun "NC", /* GPIO_88 */ 183*4882a593Smuzhiyun "NC", /* GPIO_89 */ 184*4882a593Smuzhiyun "NC", /* GPIO_90 */ 185*4882a593Smuzhiyun "WIFI_WAKE", /* GPIO_91 */ 186*4882a593Smuzhiyun "BT_WAKE", /* GPIO_92 */ 187*4882a593Smuzhiyun "NC", /* GPIO_93 */ 188*4882a593Smuzhiyun "OTG_EN2", /* GPIO_94 */ 189*4882a593Smuzhiyun "OTG_EN", /* GPIO_95 */ 190*4882a593Smuzhiyun "DSI_DP3", /* GPIO_96, HSEC pin 45 */ 191*4882a593Smuzhiyun "DSI_DN3", /* GPIO_97, HSEC pin 47 */ 192*4882a593Smuzhiyun "DSI_DP1", /* GPIO_98, HSEC pin 33 */ 193*4882a593Smuzhiyun "DSI_DN1", /* GPIO_99, HSEC pin 35 */ 194*4882a593Smuzhiyun "DSI_CP", /* GPIO_100, HSEC pin 21 */ 195*4882a593Smuzhiyun "DSI_CN", /* GPIO_101, HSEC pin 23 */ 196*4882a593Smuzhiyun "DSI_DP0", /* GPIO_102, HSEC pin 27 */ 197*4882a593Smuzhiyun "DSI_DN0", /* GPIO_103, HSEC pin 29 */ 198*4882a593Smuzhiyun "DSI_DP2", /* GPIO_104, HSEC pin 39 */ 199*4882a593Smuzhiyun "DSI_DN2", /* GPIO_105, HSEC pin 41 */ 200*4882a593Smuzhiyun "N0_D0", /* GPIO_106 */ 201*4882a593Smuzhiyun "N0_D1", /* GPIO_107 */ 202*4882a593Smuzhiyun "N0_D2", /* GPIO_108 */ 203*4882a593Smuzhiyun "N0_D3", /* GPIO_109 */ 204*4882a593Smuzhiyun "N0_D4", /* GPIO_110 */ 205*4882a593Smuzhiyun "N0_D5", /* GPIO_111 */ 206*4882a593Smuzhiyun "N0_D6", /* GPIO_112 */ 207*4882a593Smuzhiyun "N0_D7", /* GPIO_113 */ 208*4882a593Smuzhiyun "N0_DQS", /* GPIO_114 */ 209*4882a593Smuzhiyun "N0_DQSN", /* GPIO_115 */ 210*4882a593Smuzhiyun "NC", /* GPIO_116 */ 211*4882a593Smuzhiyun "NC", /* GPIO_117 */ 212*4882a593Smuzhiyun "NC", /* GPIO_118 */ 213*4882a593Smuzhiyun "N0_CEB1", /* GPIO_119 */ 214*4882a593Smuzhiyun "CARD_DT", /* GPIO_120 */ 215*4882a593Smuzhiyun "N0_CEB3", /* GPIO_121 */ 216*4882a593Smuzhiyun "SD_DAT0", /* GPIO_122, HSEC pin 1 */ 217*4882a593Smuzhiyun "SD_DAT1", /* GPIO_123, HSEC pin 3 */ 218*4882a593Smuzhiyun "SD_DAT2", /* GPIO_124, HSEC pin 5 */ 219*4882a593Smuzhiyun "SD_DAT3", /* GPIO_125, HSEC pin 7 */ 220*4882a593Smuzhiyun "NC", /* GPIO_126 */ 221*4882a593Smuzhiyun "NC", /* GPIO_127 */ 222*4882a593Smuzhiyun "[PWR_BTN_N]", /* GPIO_128, LSEC pin 4 */ 223*4882a593Smuzhiyun "[RST_BTN_N]", /* GPIO_129, LSEC pin 6 */ 224*4882a593Smuzhiyun "NC", /* GPIO_130 */ 225*4882a593Smuzhiyun "SD_CMD", /* GPIO_131 */ 226*4882a593Smuzhiyun "GPIO-L", /* GPIO_132, LSEC pin 34 */ 227*4882a593Smuzhiyun "GPIO-K", /* GPIO_133, LSEC pin 33 */ 228*4882a593Smuzhiyun "NC", /* GPIO_134 */ 229*4882a593Smuzhiyun "SD_SCLK", /* GPIO_135 */ 230*4882a593Smuzhiyun "NC", /* GPIO_136 */ 231*4882a593Smuzhiyun "JTAG_TRST", /* GPIO_137 */ 232*4882a593Smuzhiyun "I2C3_SCLK", /* GPIO_138 */ 233*4882a593Smuzhiyun "LED2", /* GPIO_139 */ 234*4882a593Smuzhiyun "LED3", /* GPIO_140 */ 235*4882a593Smuzhiyun "I2C3_SDATA", /* GPIO_141 */ 236*4882a593Smuzhiyun "UART3_RX", /* GPIO_142 */ 237*4882a593Smuzhiyun "UART3_TX", /* GPIO_143 */ 238*4882a593Smuzhiyun "UART3_RTSB", /* GPIO_144 */ 239*4882a593Smuzhiyun "UART3_CTSB"; /* GPIO_145 */ 240*4882a593Smuzhiyun 241*4882a593Smuzhiyun i2c0_default: i2c0-default { 242*4882a593Smuzhiyun pinmux { 243*4882a593Smuzhiyun groups = "i2c0_mfp"; 244*4882a593Smuzhiyun function = "i2c0"; 245*4882a593Smuzhiyun }; 246*4882a593Smuzhiyun pinconf { 247*4882a593Smuzhiyun pins = "i2c0_sclk", "i2c0_sdata"; 248*4882a593Smuzhiyun bias-pull-up; 249*4882a593Smuzhiyun }; 250*4882a593Smuzhiyun }; 251*4882a593Smuzhiyun 252*4882a593Smuzhiyun i2c1_default: i2c1-default { 253*4882a593Smuzhiyun pinconf { 254*4882a593Smuzhiyun pins = "i2c1_sclk", "i2c1_sdata"; 255*4882a593Smuzhiyun bias-pull-up; 256*4882a593Smuzhiyun }; 257*4882a593Smuzhiyun }; 258*4882a593Smuzhiyun 259*4882a593Smuzhiyun i2c2_default: i2c2-default { 260*4882a593Smuzhiyun pinconf { 261*4882a593Smuzhiyun pins = "i2c2_sclk", "i2c2_sdata"; 262*4882a593Smuzhiyun bias-pull-up; 263*4882a593Smuzhiyun }; 264*4882a593Smuzhiyun }; 265*4882a593Smuzhiyun 266*4882a593Smuzhiyun mmc0_default: mmc0_default { 267*4882a593Smuzhiyun pinmux { 268*4882a593Smuzhiyun groups = "sd0_d0_mfp", "sd0_d1_mfp", "sd0_d2_d3_mfp", 269*4882a593Smuzhiyun "sd0_cmd_mfp", "sd0_clk_mfp"; 270*4882a593Smuzhiyun function = "sd0"; 271*4882a593Smuzhiyun }; 272*4882a593Smuzhiyun }; 273*4882a593Smuzhiyun 274*4882a593Smuzhiyun mmc2_default: mmc2_default { 275*4882a593Smuzhiyun pinmux { 276*4882a593Smuzhiyun groups = "nand0_d0_ceb3_mfp"; 277*4882a593Smuzhiyun function = "sd2"; 278*4882a593Smuzhiyun }; 279*4882a593Smuzhiyun }; 280*4882a593Smuzhiyun}; 281*4882a593Smuzhiyun 282*4882a593Smuzhiyun/* uSD */ 283*4882a593Smuzhiyun&mmc0 { 284*4882a593Smuzhiyun status = "okay"; 285*4882a593Smuzhiyun pinctrl-names = "default"; 286*4882a593Smuzhiyun pinctrl-0 = <&mmc0_default>; 287*4882a593Smuzhiyun no-sdio; 288*4882a593Smuzhiyun no-mmc; 289*4882a593Smuzhiyun no-1-8-v; 290*4882a593Smuzhiyun cd-gpios = <&pinctrl 120 GPIO_ACTIVE_LOW>; 291*4882a593Smuzhiyun bus-width = <4>; 292*4882a593Smuzhiyun vmmc-supply = <&sd_vcc>; 293*4882a593Smuzhiyun vqmmc-supply = <&sd_vcc>; 294*4882a593Smuzhiyun}; 295*4882a593Smuzhiyun 296*4882a593Smuzhiyun/* eMMC */ 297*4882a593Smuzhiyun&mmc2 { 298*4882a593Smuzhiyun status = "okay"; 299*4882a593Smuzhiyun pinctrl-names = "default"; 300*4882a593Smuzhiyun pinctrl-0 = <&mmc2_default>; 301*4882a593Smuzhiyun no-sdio; 302*4882a593Smuzhiyun no-sd; 303*4882a593Smuzhiyun non-removable; 304*4882a593Smuzhiyun bus-width = <8>; 305*4882a593Smuzhiyun vmmc-supply = <&vcc_3v1>; 306*4882a593Smuzhiyun}; 307*4882a593Smuzhiyun 308*4882a593Smuzhiyun&timer { 309*4882a593Smuzhiyun clocks = <&hosc>; 310*4882a593Smuzhiyun}; 311*4882a593Smuzhiyun 312*4882a593Smuzhiyun&uart5 { 313*4882a593Smuzhiyun status = "okay"; 314*4882a593Smuzhiyun}; 315