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