On 20/07/2023 13:29, Nikita Shubin via B4 Relay wrote:
From: Nikita Shubin nikita.shubin@maquefel.me
Add support for Cirrus Logic EP93XX SoC's family.
Co-developed-by: Alexander Sverdlin alexander.sverdlin@gmail.com Signed-off-by: Alexander Sverdlin alexander.sverdlin@gmail.com Signed-off-by: Nikita Shubin nikita.shubin@maquefel.me
arch/arm/boot/dts/cirrus/ep93xx.dtsi | 449 +++++++++++++++++++++++++++++++++++ 1 file changed, 449 insertions(+)
diff --git a/arch/arm/boot/dts/cirrus/ep93xx.dtsi b/arch/arm/boot/dts/cirrus/ep93xx.dtsi new file mode 100644 index 000000000000..1e04f39d7b80 --- /dev/null +++ b/arch/arm/boot/dts/cirrus/ep93xx.dtsi @@ -0,0 +1,449 @@ +// SPDX-License-Identifier: GPL-2.0 +/*
- Device Tree file for Cirrus Logic systems EP93XX SoC
- */
+#include <dt-bindings/gpio/gpio.h> +#include <dt-bindings/leds/common.h> +#include <dt-bindings/input/input.h> +#include <dt-bindings/clock/cirrus,ep93xx-clock.h> +/ {
- soc: soc {
compatible = "simple-bus";ranges;#address-cells = <1>;#size-cells = <1>;syscon: syscon@80930000 {compatible = "cirrus,ep9301-syscon","syscon", "simple-mfd";
Fix alignment.
reg = <0x80930000 0x1000>;eclk: clock-controller {compatible = "cirrus,ep9301-clk";#clock-cells = <1>;clocks = <&xtali>;status = "okay";
Drop statuses when not needed.
};pinctrl: pinctrl {compatible = "cirrus,ep9301-pinctrl";spi_default_pins: pins-spi {function = "spi";groups = "ssp";};
...
keypad: keypad@800f0000 {compatible = "cirrus,ep9307-keypad";reg = <0x800f0000 0x0c>;interrupt-parent = <&vic0>;interrupts = <29>;clocks = <&eclk EP93XX_CLK_KEYPAD>;pinctrl-names = "default";pinctrl-0 = <&keypad_default_pins>;linux,keymap =
No need for line break.
<KEY_UP>,<KEY_DOWN>,<KEY_VOLUMEDOWN>,<KEY_HOME>,<KEY_RIGHT>,<KEY_LEFT>,<KEY_ENTER>,<KEY_VOLUMEUP>,<KEY_F6>,<KEY_F8>,<KEY_F9>,<KEY_F10>,<KEY_F1>,<KEY_F2>,<KEY_F3>,<KEY_POWER>;};pwm0: pwm@80910000 {compatible = "cirrus,ep9301-pwm";reg = <0x80910000 0x10>;clocks = <&eclk EP93XX_CLK_PWM>;status = "disabled";};pwm1: pwm@80910020 {compatible = "cirrus,ep9301-pwm";reg = <0x80910020 0x10>;clocks = <&eclk EP93XX_CLK_PWM>;pinctrl-names = "default";pinctrl-0 = <&pwm1_default_pins>;status = "disabled";};rtc0: rtc@80920000 {compatible = "cirrus,ep9301-rtc";reg = <0x80920000 0x100>;};spi0: spi@808a0000 {compatible = "cirrus,ep9301-spi";reg = <0x808a0000 0x18>;#address-cells = <1>;#size-cells = <0>;interrupt-parent = <&vic1>;interrupts = <21>;clocks = <&eclk EP93XX_CLK_SPI>;pinctrl-names = "default";pinctrl-0 = <&spi_default_pins>;status = "disabled";};timer: timer@80810000 {compatible = "cirrus,ep9301-timer";reg = <0x80810000 0x100>;interrupt-parent = <&vic1>;interrupts = <19>;};uart0: uart@808c0000 {compatible = "arm,primecell";
This looks incomplete.
reg = <0x808c0000 0x1000>;arm,primecell-periphid = <0x00041010>;clocks = <&eclk EP93XX_CLK_UART1>, <&eclk EP93XX_CLK_UART>;clock-names = "apb:uart1", "apb_pclk";
It does not look like you tested the DTS against bindings. Please run `make dtbs_check` (see Documentation/devicetree/bindings/writing-schema.rst or https://www.linaro.org/blog/tips-and-tricks-for-validating-devicetree-source... for instructions).
interrupt-parent = <&vic1>;interrupts = <20>;status = "disabled";};uart1: uart@808d0000 {compatible = "arm,primecell";reg = <0x808d0000 0x1000>;arm,primecell-periphid = <0x00041010>;clocks = <&eclk EP93XX_CLK_UART2>, <&eclk EP93XX_CLK_UART>;clock-names = "apb:uart2", "apb_pclk";
It does not look like you tested the DTS against bindings. Please run `make dtbs_check` (see Documentation/devicetree/bindings/writing-schema.rst or https://www.linaro.org/blog/tips-and-tricks-for-validating-devicetree-source... for instructions).
interrupt-parent = <&vic1>;interrupts = <22>;status = "disabled";};uart2: uart@808b0000 {compatible = "arm,primecell";reg = <0x808b0000 0x1000>;arm,primecell-periphid = <0x00041010>;clocks = <&eclk EP93XX_CLK_UART3>, <&eclk EP93XX_CLK_UART>;clock-names = "apb:uart3", "apb_pclk";interrupt-parent = <&vic1>;interrupts = <23>;status = "disabled";};usb0: usb@80020000 {compatible = "generic-ohci";reg = <0x80020000 0x10000>;interrupt-parent = <&vic1>;interrupts = <24>;clocks = <&eclk EP93XX_CLK_USB>;status = "disabled";};watchdog0: watchdog@80940000 {compatible = "cirrus,ep9301-wdt";reg = <0x80940000 0x08>;};- };
- xtali: oscillator {
compatible = "fixed-clock";#clock-cells = <0>;clock-frequency = <14745600>;clock-output-names = "xtali";- };
- i2c0: i2c {
compatible = "i2c-gpio";sda-gpios = <&gpio6 1 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;scl-gpios = <&gpio6 0 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
Are you sure this is part of SoC? It is rather unusual... I would say this would be the first SoC, where GPIO pins must be an I2C.
Best regards, Krzysztof