1 1.1 jmcneill // SPDX-License-Identifier: GPL-2.0 2 1.1 jmcneill /* 3 1.1 jmcneill * Device Tree Source for the iWave-RZ/G1H Qseven board development 4 1.1 jmcneill * platform with camera daughter board 5 1.1 jmcneill * 6 1.1 jmcneill * Copyright (C) 2020 Renesas Electronics Corp. 7 1.1 jmcneill */ 8 1.1 jmcneill 9 1.1 jmcneill /dts-v1/; 10 1.1 jmcneill #include "r8a7742-iwg21d-q7.dts" 11 1.1 jmcneill 12 1.1 jmcneill / { 13 1.1 jmcneill model = "iWave Systems RZ/G1H Qseven development platform with camera add-on"; 14 1.1 jmcneill compatible = "iwave,g21d", "iwave,g21m", "renesas,r8a7742"; 15 1.1 jmcneill 16 1.1 jmcneill aliases { 17 1.1 jmcneill serial0 = &scif0; 18 1.1 jmcneill serial1 = &scif1; 19 1.1 jmcneill serial3 = &scifb1; 20 1.1 jmcneill serial5 = &hscif0; 21 1.1 jmcneill ethernet1 = ðer; 22 1.1 jmcneill }; 23 1.1 jmcneill 24 1.1 jmcneill mclk_cam1: mclk-cam1 { 25 1.1 jmcneill compatible = "fixed-clock"; 26 1.1 jmcneill #clock-cells = <0>; 27 1.1 jmcneill clock-frequency = <26000000>; 28 1.1 jmcneill }; 29 1.1 jmcneill 30 1.1 jmcneill mclk_cam2: mclk-cam2 { 31 1.1 jmcneill compatible = "fixed-clock"; 32 1.1 jmcneill #clock-cells = <0>; 33 1.1 jmcneill clock-frequency = <26000000>; 34 1.1 jmcneill }; 35 1.1 jmcneill 36 1.1 jmcneill mclk_cam3: mclk-cam3 { 37 1.1 jmcneill compatible = "fixed-clock"; 38 1.1 jmcneill #clock-cells = <0>; 39 1.1 jmcneill clock-frequency = <26000000>; 40 1.1 jmcneill }; 41 1.1 jmcneill 42 1.1 jmcneill mclk_cam4: mclk-cam4 { 43 1.1 jmcneill compatible = "fixed-clock"; 44 1.1 jmcneill #clock-cells = <0>; 45 1.1 jmcneill clock-frequency = <26000000>; 46 1.1 jmcneill }; 47 1.1 jmcneill }; 48 1.1 jmcneill 49 1.1 jmcneill &avb { 50 1.1 jmcneill /* Pins shared with VIN0, keep status disabled */ 51 1.1 jmcneill status = "disabled"; 52 1.1 jmcneill }; 53 1.1 jmcneill 54 1.1 jmcneill &can0 { 55 1.1 jmcneill pinctrl-0 = <&can0_pins>; 56 1.1 jmcneill pinctrl-names = "default"; 57 1.1 jmcneill status = "okay"; 58 1.1 jmcneill }; 59 1.1 jmcneill 60 1.1 jmcneill ðer { 61 1.1 jmcneill pinctrl-0 = <ðer_pins>; 62 1.1 jmcneill pinctrl-names = "default"; 63 1.1 jmcneill 64 1.1 jmcneill phy-handle = <&phy1>; 65 1.1 jmcneill renesas,ether-link-active-low; 66 1.1 jmcneill status = "okay"; 67 1.1 jmcneill 68 1.1 jmcneill phy1: ethernet-phy@1 { 69 1.1 jmcneill reg = <1>; 70 1.1 jmcneill micrel,led-mode = <1>; 71 1.1 jmcneill }; 72 1.1 jmcneill }; 73 1.1 jmcneill 74 1.1 jmcneill &gpio0 { 75 1.1 jmcneill /* Disable hogging GP0_18 to output LOW */ 76 1.1 jmcneill /delete-node/ qspi_en; 77 1.1 jmcneill 78 1.1 jmcneill /* Hog GP0_18 to output HIGH to enable VIN2 */ 79 1.1 jmcneill vin2_en { 80 1.1 jmcneill gpio-hog; 81 1.1 jmcneill gpios = <18 GPIO_ACTIVE_HIGH>; 82 1.1 jmcneill output-high; 83 1.1 jmcneill line-name = "VIN2_EN"; 84 1.1 jmcneill }; 85 1.1 jmcneill }; 86 1.1 jmcneill 87 1.1 jmcneill &hscif0 { 88 1.1 jmcneill pinctrl-0 = <&hscif0_pins>; 89 1.1 jmcneill pinctrl-names = "default"; 90 1.1 jmcneill uart-has-rtscts; 91 1.1 jmcneill status = "okay"; 92 1.1 jmcneill }; 93 1.1 jmcneill 94 1.1 jmcneill &i2c1 { 95 1.1 jmcneill pinctrl-0 = <&i2c1_pins>; 96 1.1 jmcneill pinctrl-names = "default"; 97 1.1 jmcneill 98 1.1 jmcneill /* status set to "okay" when needed by camera configuration below */ 99 1.1 jmcneill clock-frequency = <400000>; 100 1.1 jmcneill }; 101 1.1 jmcneill 102 1.1 jmcneill &i2c3 { 103 1.1 jmcneill pinctrl-0 = <&i2c3_pins>; 104 1.1 jmcneill pinctrl-names = "default"; 105 1.1 jmcneill 106 1.1 jmcneill /* status set to "okay" when needed by camera configuration below */ 107 1.1 jmcneill clock-frequency = <400000>; 108 1.1 jmcneill }; 109 1.1 jmcneill 110 1.1 jmcneill &pfc { 111 1.1 jmcneill can0_pins: can0 { 112 1.1 jmcneill groups = "can0_data_d"; 113 1.1 jmcneill function = "can0"; 114 1.1 jmcneill }; 115 1.1 jmcneill 116 1.1 jmcneill ether_pins: ether { 117 1.1 jmcneill groups = "eth_mdio", "eth_rmii"; 118 1.1 jmcneill function = "eth"; 119 1.1 jmcneill }; 120 1.1 jmcneill 121 1.1 jmcneill hscif0_pins: hscif0 { 122 1.1 jmcneill groups = "hscif0_data", "hscif0_ctrl"; 123 1.1 jmcneill function = "hscif0"; 124 1.1 jmcneill }; 125 1.1 jmcneill 126 1.1 jmcneill i2c1_pins: i2c1 { 127 1.1 jmcneill groups = "i2c1_c"; 128 1.1 jmcneill function = "i2c1"; 129 1.1 jmcneill }; 130 1.1 jmcneill 131 1.1 jmcneill i2c3_pins: i2c3 { 132 1.1 jmcneill groups = "i2c3"; 133 1.1 jmcneill function = "i2c3"; 134 1.1 jmcneill }; 135 1.1 jmcneill 136 1.1 jmcneill scif0_pins: scif0 { 137 1.1 jmcneill groups = "scif0_data"; 138 1.1 jmcneill function = "scif0"; 139 1.1 jmcneill }; 140 1.1 jmcneill 141 1.1 jmcneill scif1_pins: scif1 { 142 1.1 jmcneill groups = "scif1_data"; 143 1.1 jmcneill function = "scif1"; 144 1.1 jmcneill }; 145 1.1 jmcneill 146 1.1 jmcneill scifb1_pins: scifb1 { 147 1.1 jmcneill groups = "scifb1_data"; 148 1.1 jmcneill function = "scifb1"; 149 1.1 jmcneill }; 150 1.1 jmcneill 151 1.1 jmcneill vin0_8bit_pins: vin0 { 152 1.1 jmcneill groups = "vin0_data8", "vin0_clk", "vin0_sync"; 153 1.1 jmcneill function = "vin0"; 154 1.1 jmcneill }; 155 1.1 jmcneill 156 1.1 jmcneill vin1_8bit_pins: vin1 { 157 1.1 jmcneill groups = "vin1_data8_b", "vin1_clk_b", "vin1_sync_b"; 158 1.1 jmcneill function = "vin1"; 159 1.1 jmcneill }; 160 1.1 jmcneill 161 1.1 jmcneill vin2_pins: vin2 { 162 1.1 jmcneill groups = "vin2_g8", "vin2_clk"; 163 1.1 jmcneill function = "vin2"; 164 1.1 jmcneill }; 165 1.1 jmcneill 166 1.1 jmcneill vin3_pins: vin3 { 167 1.1 jmcneill groups = "vin3_data8", "vin3_clk", "vin3_sync"; 168 1.1 jmcneill function = "vin3"; 169 1.1 jmcneill }; 170 1.1 jmcneill }; 171 1.1 jmcneill 172 1.1 jmcneill &qspi { 173 1.1 jmcneill /* Pins shared with VIN2, keep status disabled */ 174 1.1 jmcneill status = "disabled"; 175 1.1 jmcneill }; 176 1.1 jmcneill 177 1.1 jmcneill &scif0 { 178 1.1 jmcneill pinctrl-0 = <&scif0_pins>; 179 1.1 jmcneill pinctrl-names = "default"; 180 1.1 jmcneill status = "okay"; 181 1.1 jmcneill }; 182 1.1 jmcneill 183 1.1 jmcneill &scif1 { 184 1.1 jmcneill pinctrl-0 = <&scif1_pins>; 185 1.1 jmcneill pinctrl-names = "default"; 186 1.1 jmcneill status = "okay"; 187 1.1 jmcneill }; 188 1.1 jmcneill 189 1.1 jmcneill &scifb1 { 190 1.1 jmcneill pinctrl-0 = <&scifb1_pins>; 191 1.1 jmcneill pinctrl-names = "default"; 192 1.1 jmcneill status = "okay"; 193 1.1 jmcneill 194 1.1 jmcneill rts-gpios = <&gpio4 21 GPIO_ACTIVE_LOW>; 195 1.1 jmcneill cts-gpios = <&gpio4 17 GPIO_ACTIVE_LOW>; 196 1.1 jmcneill }; 197 1.1 jmcneill 198 1.1 jmcneill /* 199 1.1 jmcneill * Below configuration ties VINx endpoints to ov5640/ov7725 camera endpoints 200 1.1 jmcneill * 201 1.1 jmcneill * (un)comment the #include statements to change configuration 202 1.1 jmcneill */ 203 1.1 jmcneill 204 1.1 jmcneill /* 8bit CMOS Camera 1 (J13) */ 205 1.1 jmcneill #define CAM_PARENT_I2C i2c0 206 1.1 jmcneill #define MCLK_CAM mclk_cam1 207 1.1 jmcneill #define CAM_EP cam0ep 208 1.1 jmcneill #define VIN_EP vin0ep 209 1.1 jmcneill #undef CAM_ENABLED 210 1.1 jmcneill #include "r8a7742-iwg21d-q7-dbcm-ov5640-single.dtsi" 211 1.1 jmcneill //#include "r8a7742-iwg21d-q7-dbcm-ov7725-single.dtsi" 212 1.1 jmcneill 213 1.1 jmcneill #ifdef CAM_ENABLED 214 1.1 jmcneill &vin0 { 215 1.1 jmcneill /* 216 1.1 jmcneill * Set SW2 switch on the SOM to 'ON' 217 1.1 jmcneill * Set SW1 switch on camera board to 'OFF' as we are using 8bit mode 218 1.1 jmcneill */ 219 1.1 jmcneill status = "okay"; 220 1.1 jmcneill pinctrl-0 = <&vin0_8bit_pins>; 221 1.1 jmcneill pinctrl-names = "default"; 222 1.1 jmcneill 223 1.1 jmcneill port { 224 1.1 jmcneill vin0ep: endpoint { 225 1.1 jmcneill remote-endpoint = <&cam0ep>; 226 1.1 jmcneill bus-width = <8>; 227 1.1 jmcneill bus-type = <6>; 228 1.1 jmcneill }; 229 1.1 jmcneill }; 230 1.1 jmcneill }; 231 1.1 jmcneill #endif /* CAM_ENABLED */ 232 1.1 jmcneill 233 1.1 jmcneill #undef CAM_PARENT_I2C 234 1.1 jmcneill #undef MCLK_CAM 235 1.1 jmcneill #undef CAM_EP 236 1.1 jmcneill #undef VIN_EP 237 1.1 jmcneill 238 1.1 jmcneill /* 8bit CMOS Camera 2 (J14) */ 239 1.1 jmcneill #define CAM_PARENT_I2C i2c1 240 1.1 jmcneill #define MCLK_CAM mclk_cam2 241 1.1 jmcneill #define CAM_EP cam1ep 242 1.1 jmcneill #define VIN_EP vin1ep 243 1.1 jmcneill #undef CAM_ENABLED 244 1.1 jmcneill #include "r8a7742-iwg21d-q7-dbcm-ov5640-single.dtsi" 245 1.1 jmcneill //#include "r8a7742-iwg21d-q7-dbcm-ov7725-single.dtsi" 246 1.1 jmcneill 247 1.1 jmcneill #ifdef CAM_ENABLED 248 1.1 jmcneill &vin1 { 249 1.1 jmcneill /* Set SW1 switch on the SOM to 'ON' */ 250 1.1 jmcneill status = "okay"; 251 1.1 jmcneill pinctrl-0 = <&vin1_8bit_pins>; 252 1.1 jmcneill pinctrl-names = "default"; 253 1.1 jmcneill 254 1.1 jmcneill port { 255 1.1 jmcneill vin1ep: endpoint { 256 1.1 jmcneill remote-endpoint = <&cam1ep>; 257 1.1 jmcneill bus-width = <8>; 258 1.1 jmcneill bus-type = <6>; 259 1.1 jmcneill }; 260 1.1 jmcneill }; 261 1.1 jmcneill }; 262 1.1 jmcneill 263 1.1 jmcneill #endif /* CAM_ENABLED */ 264 1.1 jmcneill 265 1.1 jmcneill #undef CAM_PARENT_I2C 266 1.1 jmcneill #undef MCLK_CAM 267 1.1 jmcneill #undef CAM_EP 268 1.1 jmcneill #undef VIN_EP 269 1.1 jmcneill 270 1.1 jmcneill /* 8bit CMOS Camera 3 (J12) */ 271 1.1 jmcneill #define CAM_PARENT_I2C i2c2 272 1.1 jmcneill #define MCLK_CAM mclk_cam3 273 1.1 jmcneill #define CAM_EP cam2ep 274 1.1 jmcneill #define VIN_EP vin2ep 275 1.1 jmcneill #undef CAM_ENABLED 276 1.1 jmcneill #include "r8a7742-iwg21d-q7-dbcm-ov5640-single.dtsi" 277 1.1 jmcneill //#include "r8a7742-iwg21d-q7-dbcm-ov7725-single.dtsi" 278 1.1 jmcneill 279 1.1 jmcneill #ifdef CAM_ENABLED 280 1.1 jmcneill &vin2 { 281 1.1 jmcneill status = "okay"; 282 1.1 jmcneill pinctrl-0 = <&vin2_pins>; 283 1.1 jmcneill pinctrl-names = "default"; 284 1.1 jmcneill 285 1.1 jmcneill port { 286 1.1 jmcneill vin2ep: endpoint { 287 1.1 jmcneill remote-endpoint = <&cam2ep>; 288 1.1 jmcneill bus-width = <8>; 289 1.1 jmcneill data-shift = <8>; 290 1.1 jmcneill bus-type = <6>; 291 1.1 jmcneill }; 292 1.1 jmcneill }; 293 1.1 jmcneill }; 294 1.1 jmcneill #endif /* CAM_ENABLED */ 295 1.1 jmcneill 296 1.1 jmcneill #undef CAM_PARENT_I2C 297 1.1 jmcneill #undef MCLK_CAM 298 1.1 jmcneill #undef CAM_EP 299 1.1 jmcneill #undef VIN_EP 300 1.1 jmcneill 301 1.1 jmcneill /* 8bit CMOS Camera 4 (J11) */ 302 1.1 jmcneill #define CAM_PARENT_I2C i2c3 303 1.1 jmcneill #define MCLK_CAM mclk_cam4 304 1.1 jmcneill #define CAM_EP cam3ep 305 1.1 jmcneill #define VIN_EP vin3ep 306 1.1 jmcneill #undef CAM_ENABLED 307 1.1 jmcneill #include "r8a7742-iwg21d-q7-dbcm-ov5640-single.dtsi" 308 1.1 jmcneill //#include "r8a7742-iwg21d-q7-dbcm-ov7725-single.dtsi" 309 1.1 jmcneill 310 1.1 jmcneill #ifdef CAM_ENABLED 311 1.1 jmcneill &vin3 { 312 1.1 jmcneill status = "okay"; 313 1.1 jmcneill pinctrl-0 = <&vin3_pins>; 314 1.1 jmcneill pinctrl-names = "default"; 315 1.1 jmcneill 316 1.1 jmcneill port { 317 1.1 jmcneill vin3ep: endpoint { 318 1.1 jmcneill remote-endpoint = <&cam3ep>; 319 1.1 jmcneill bus-width = <8>; 320 1.1 jmcneill bus-type = <6>; 321 1.1 jmcneill }; 322 1.1 jmcneill }; 323 1.1 jmcneill }; 324 1.1 jmcneill #endif /* CAM_ENABLED */ 325 1.1 jmcneill 326 1.1 jmcneill #undef CAM_PARENT_I2C 327 1.1 jmcneill #undef MCLK_CAM 328 1.1 jmcneill #undef CAM_EP 329 1.1 jmcneill #undef VIN_EP 330