| // SPDX-License-Identifier: GPL-2.0-or-later | 
 | /* | 
 |  * ox810se.dtsi - Device tree file for Oxford Semiconductor OX810SE SoC | 
 |  * | 
 |  * Copyright (C) 2016 Neil Armstrong <narmstrong@baylibre.com> | 
 |  */ | 
 |  | 
 | #include <dt-bindings/clock/oxsemi,ox810se.h> | 
 | #include <dt-bindings/reset/oxsemi,ox810se.h> | 
 |  | 
 | / { | 
 | 	#address-cells = <1>; | 
 | 	#size-cells = <1>; | 
 | 	compatible = "oxsemi,ox810se"; | 
 |  | 
 | 	cpus { | 
 | 		#address-cells = <0>; | 
 | 		#size-cells = <0>; | 
 |  | 
 | 		cpu { | 
 | 			device_type = "cpu"; | 
 | 			compatible = "arm,arm926ej-s"; | 
 | 			clocks = <&armclk>; | 
 | 		}; | 
 | 	}; | 
 |  | 
 | 	memory { | 
 | 		device_type = "memory"; | 
 | 		/* Max 256MB @ 0x48000000 */ | 
 | 		reg = <0x48000000 0x10000000>; | 
 | 	}; | 
 |  | 
 | 	clocks { | 
 | 		osc: oscillator { | 
 | 			compatible = "fixed-clock"; | 
 | 			#clock-cells = <0>; | 
 | 			clock-frequency = <25000000>; | 
 | 		}; | 
 |  | 
 | 		gmacclk: gmacclk { | 
 | 			compatible = "fixed-clock"; | 
 | 			#clock-cells = <0>; | 
 | 			clock-frequency = <125000000>; | 
 | 		}; | 
 |  | 
 | 		rpsclk: rpsclk { | 
 | 			compatible = "fixed-factor-clock"; | 
 | 			#clock-cells = <0>; | 
 | 			clock-div = <1>; | 
 | 			clock-mult = <1>; | 
 | 			clocks = <&osc>; | 
 | 		}; | 
 |  | 
 | 		pll400: pll400 { | 
 | 			compatible = "fixed-clock"; | 
 | 			#clock-cells = <0>; | 
 | 			clock-frequency = <733333333>; | 
 | 		}; | 
 |  | 
 | 		sysclk: sysclk { | 
 | 			compatible = "fixed-factor-clock"; | 
 | 			#clock-cells = <0>; | 
 | 			clock-div = <4>; | 
 | 			clock-mult = <1>; | 
 | 			clocks = <&pll400>; | 
 | 		}; | 
 |  | 
 | 		armclk: armclk { | 
 | 			compatible = "fixed-factor-clock"; | 
 | 			#clock-cells = <0>; | 
 | 			clock-div = <2>; | 
 | 			clock-mult = <1>; | 
 | 			clocks = <&pll400>; | 
 | 		}; | 
 | 	}; | 
 |  | 
 | 	soc { | 
 | 		#address-cells = <1>; | 
 | 		#size-cells = <1>; | 
 | 		compatible = "simple-bus"; | 
 | 		ranges; | 
 | 		interrupt-parent = <&intc>; | 
 |  | 
 | 		apb-bridge@44000000 { | 
 | 			#address-cells = <1>; | 
 | 			#size-cells = <1>; | 
 | 			compatible = "simple-bus"; | 
 | 			ranges = <0 0x44000000 0x1000000>; | 
 |  | 
 | 			pinctrl: pinctrl { | 
 | 				compatible = "oxsemi,ox810se-pinctrl"; | 
 |  | 
 | 				/* Regmap for sys registers */ | 
 | 				oxsemi,sys-ctrl = <&sys>; | 
 |  | 
 | 				pinctrl_uart0: uart0 { | 
 | 					uart0a { | 
 | 						pins = "gpio31"; | 
 | 						function = "fct3"; | 
 | 					}; | 
 | 					uart0b { | 
 | 						pins = "gpio32"; | 
 | 						function = "fct3"; | 
 | 					}; | 
 | 				}; | 
 |  | 
 | 				pinctrl_uart0_modem: uart0_modem { | 
 | 					uart0c { | 
 | 						pins = "gpio27"; | 
 | 						function = "fct3"; | 
 | 					}; | 
 | 					uart0d { | 
 | 						pins = "gpio28"; | 
 | 						function = "fct3"; | 
 | 					}; | 
 | 					uart0e { | 
 | 						pins = "gpio29"; | 
 | 						function = "fct3"; | 
 | 					}; | 
 | 					uart0f { | 
 | 						pins = "gpio30"; | 
 | 						function = "fct3"; | 
 | 					}; | 
 | 					uart0g { | 
 | 						pins = "gpio33"; | 
 | 						function = "fct3"; | 
 | 					}; | 
 | 					uart0h { | 
 | 						pins = "gpio34"; | 
 | 						function = "fct3"; | 
 | 					}; | 
 | 				}; | 
 |  | 
 | 				pinctrl_uart1: uart1 { | 
 | 					uart1a { | 
 | 						pins = "gpio20"; | 
 | 						function = "fct3"; | 
 | 					}; | 
 | 					uart1b { | 
 | 						pins = "gpio22"; | 
 | 						function = "fct3"; | 
 | 					}; | 
 | 				}; | 
 |  | 
 | 				pinctrl_uart1_modem: uart1_modem { | 
 | 					uart1c { | 
 | 						pins = "gpio8"; | 
 | 						function = "fct3"; | 
 | 					}; | 
 | 					uart1d { | 
 | 						pins = "gpio9"; | 
 | 						function = "fct3"; | 
 | 					}; | 
 | 					uart1e { | 
 | 						pins = "gpio23"; | 
 | 						function = "fct3"; | 
 | 					}; | 
 | 					uart1f { | 
 | 						pins = "gpio24"; | 
 | 						function = "fct3"; | 
 | 					}; | 
 | 					uart1g { | 
 | 						pins = "gpio25"; | 
 | 						function = "fct3"; | 
 | 					}; | 
 | 					uart1h { | 
 | 						pins = "gpio26"; | 
 | 						function = "fct3"; | 
 | 					}; | 
 | 				}; | 
 |  | 
 | 				pinctrl_uart2: uart2 { | 
 | 					uart2a { | 
 | 						pins = "gpio6"; | 
 | 						function = "fct3"; | 
 | 					}; | 
 | 					uart2b { | 
 | 						pins = "gpio7"; | 
 | 						function = "fct3"; | 
 | 					}; | 
 | 				}; | 
 |  | 
 | 				pinctrl_uart2_modem: uart2_modem { | 
 | 					uart2c { | 
 | 						pins = "gpio0"; | 
 | 						function = "fct3"; | 
 | 					}; | 
 | 					uart2d { | 
 | 						pins = "gpio1"; | 
 | 						function = "fct3"; | 
 | 					}; | 
 | 					uart2e { | 
 | 						pins = "gpio2"; | 
 | 						function = "fct3"; | 
 | 					}; | 
 | 					uart2f { | 
 | 						pins = "gpio3"; | 
 | 						function = "fct3"; | 
 | 					}; | 
 | 					uart2g { | 
 | 						pins = "gpio4"; | 
 | 						function = "fct3"; | 
 | 					}; | 
 | 					uart2h { | 
 | 						pins = "gpio5"; | 
 | 						function = "fct3"; | 
 | 					}; | 
 | 				}; | 
 | 			}; | 
 |  | 
 | 			gpio0: gpio@0 { | 
 | 				compatible = "oxsemi,ox810se-gpio"; | 
 | 				reg = <0x000000 0x100000>; | 
 | 				interrupts = <21>; | 
 | 				#gpio-cells = <2>; | 
 | 				gpio-controller; | 
 | 				interrupt-controller; | 
 | 				#interrupt-cells = <2>; | 
 | 				ngpios = <32>; | 
 | 				oxsemi,gpio-bank = <0>; | 
 | 				gpio-ranges = <&pinctrl 0 0 32>; | 
 | 			}; | 
 |  | 
 | 			gpio1: gpio@100000 { | 
 | 				compatible = "oxsemi,ox810se-gpio"; | 
 | 				reg = <0x100000 0x100000>; | 
 | 				interrupts = <22>; | 
 | 				#gpio-cells = <2>; | 
 | 				gpio-controller; | 
 | 				interrupt-controller; | 
 | 				#interrupt-cells = <2>; | 
 | 				ngpios = <3>; | 
 | 				oxsemi,gpio-bank = <1>; | 
 | 				gpio-ranges = <&pinctrl 0 32 3>; | 
 | 			}; | 
 |  | 
 | 			uart0: serial@200000 { | 
 | 			       compatible = "ns16550a"; | 
 | 			       reg = <0x200000 0x100000>; | 
 | 			       clocks = <&sysclk>; | 
 | 			       interrupts = <23>; | 
 | 			       reg-shift = <0>; | 
 | 			       fifo-size = <16>; | 
 | 			       reg-io-width = <1>; | 
 | 			       current-speed = <115200>; | 
 | 			       no-loopback-test; | 
 | 			       status = "disabled"; | 
 | 			       resets = <&reset RESET_UART1>; | 
 | 			}; | 
 |  | 
 | 			uart1: serial@300000 { | 
 | 			       compatible = "ns16550a"; | 
 | 			       reg = <0x300000 0x100000>; | 
 | 			       clocks = <&sysclk>; | 
 | 			       interrupts = <24>; | 
 | 			       reg-shift = <0>; | 
 | 			       fifo-size = <16>; | 
 | 			       reg-io-width = <1>; | 
 | 			       current-speed = <115200>; | 
 | 			       no-loopback-test; | 
 | 			       status = "disabled"; | 
 | 			       resets = <&reset RESET_UART2>; | 
 | 			}; | 
 |  | 
 | 			uart2: serial@900000 { | 
 | 			       compatible = "ns16550a"; | 
 | 			       reg = <0x900000 0x100000>; | 
 | 			       clocks = <&sysclk>; | 
 | 			       interrupts = <29>; | 
 | 			       reg-shift = <0>; | 
 | 			       fifo-size = <16>; | 
 | 			       reg-io-width = <1>; | 
 | 			       current-speed = <115200>; | 
 | 			       no-loopback-test; | 
 | 			       status = "disabled"; | 
 | 			       resets = <&reset RESET_UART3>; | 
 | 			}; | 
 |  | 
 | 			uart3: serial@a00000 { | 
 | 			       compatible = "ns16550a"; | 
 | 			       reg = <0xa00000 0x100000>; | 
 | 			       clocks = <&sysclk>; | 
 | 			       interrupts = <30>; | 
 | 			       reg-shift = <0>; | 
 | 			       fifo-size = <16>; | 
 | 			       reg-io-width = <1>; | 
 | 			       current-speed = <115200>; | 
 | 			       no-loopback-test; | 
 | 			       status = "disabled"; | 
 | 			       resets = <&reset RESET_UART4>; | 
 | 			}; | 
 | 		}; | 
 |  | 
 | 		apb-bridge@45000000 { | 
 | 			#address-cells = <1>; | 
 | 			#size-cells = <1>; | 
 | 			compatible = "simple-bus"; | 
 | 			ranges = <0 0x45000000 0x1000000>; | 
 |  | 
 | 			sys: sys-ctrl@0 { | 
 | 				compatible = "oxsemi,ox810se-sys-ctrl", "syscon", "simple-mfd"; | 
 | 				reg = <0x000000 0x100000>; | 
 |  | 
 | 				reset: reset-controller { | 
 | 					compatible = "oxsemi,ox810se-reset"; | 
 | 					#reset-cells = <1>; | 
 | 				}; | 
 |  | 
 | 				stdclk: stdclk { | 
 | 					compatible = "oxsemi,ox810se-stdclk"; | 
 | 					#clock-cells = <1>; | 
 | 				}; | 
 | 			}; | 
 |  | 
 | 			rps@300000 { | 
 | 				#address-cells = <1>; | 
 | 				#size-cells = <1>; | 
 | 				compatible = "simple-bus"; | 
 | 				ranges = <0 0x300000 0x100000>; | 
 |  | 
 | 				intc: interrupt-controller@0 { | 
 | 					compatible = "oxsemi,ox810se-rps-irq"; | 
 | 					interrupt-controller; | 
 | 					reg = <0 0x200>; | 
 | 					#interrupt-cells = <1>; | 
 | 					valid-mask = <0xffffffff>; | 
 | 					clear-mask = <0xffffffff>; | 
 | 				}; | 
 |  | 
 | 				timer0: timer@200 { | 
 | 					compatible = "oxsemi,ox810se-rps-timer"; | 
 | 					reg = <0x200 0x40>; | 
 | 					clocks = <&rpsclk>; | 
 | 					interrupts = <4 5>; | 
 | 				}; | 
 | 			}; | 
 | 		}; | 
 | 	}; | 
 | }; |