From 6273342ddde09a30810a3f9293ca358e7bd8a21e Mon Sep 17 00:00:00 2001 From: maoxiaochuan Date: Mon, 10 Mar 2025 14:46:33 +0800 Subject: [PATCH] update to 7d2033720 dts:Rename loongson2k300.dtsi -> loongson-2k0300.dtsi dts:Add dts for ls2k1000_dp can:lscanfd:update lscan_.o_shipped --- arch/loongarch/boot/dts/Makefile | 1 + ...oongson2k300.dtsi => loongson-2k0300.dtsi} | 0 arch/loongarch/boot/dts/loongson-2k1000.dtsi | 438 +++++++++++++++++- arch/loongarch/boot/dts/ls2k1000_dp.dts | 403 ++++++++++++++++ .../boot/dts/ls2k300_g2k03z0_core_v10.dtsi | 2 +- .../dts/ls2k300_gongkong_g2k03z2_core.dtsi | 2 +- .../boot/dts/ls2k300_vanguard_pi_common.dtsi | 2 +- .../configs/loongson_2k300_defconfig | 2 - .../net/can/ls_canfd/lscanfd_dma.o_shipped | Bin 32680 -> 45280 bytes .../can/ls_canfd/lscanfd_platform.o_shipped | Bin 7472 -> 8808 bytes 10 files changed, 840 insertions(+), 10 deletions(-) rename arch/loongarch/boot/dts/{loongson2k300.dtsi => loongson-2k0300.dtsi} (100%) create mode 100644 arch/loongarch/boot/dts/ls2k1000_dp.dts diff --git a/arch/loongarch/boot/dts/Makefile b/arch/loongarch/boot/dts/Makefile index d1363aa05..9483324b0 100644 --- a/arch/loongarch/boot/dts/Makefile +++ b/arch/loongarch/boot/dts/Makefile @@ -4,6 +4,7 @@ ifdef CONFIG_DTB_MATCH_BY_BOARD_NAME dtb-$(CONFIG_LOONGSON_2K300) += ls2k300_mini_dp.dtb ls2k300_vanguard_pi.dtb ls2k300_gongkong_gbkpgk0.dtb +dtb-$(CONFIG_LOONGSON_2K1000) += ls2k1000_dp.dtb obj-y += $(patsubst %.dtb, %.dtb.o, $(dtb-y)) else diff --git a/arch/loongarch/boot/dts/loongson2k300.dtsi b/arch/loongarch/boot/dts/loongson-2k0300.dtsi similarity index 100% rename from arch/loongarch/boot/dts/loongson2k300.dtsi rename to arch/loongarch/boot/dts/loongson-2k0300.dtsi diff --git a/arch/loongarch/boot/dts/loongson-2k1000.dtsi b/arch/loongarch/boot/dts/loongson-2k1000.dtsi index 8dff2aa52..e59d789dd 100644 --- a/arch/loongarch/boot/dts/loongson-2k1000.dtsi +++ b/arch/loongarch/boot/dts/loongson-2k1000.dtsi @@ -150,7 +150,187 @@ pctrl: pinctrl@1fe00420 { compatible = "loongson,ls2k-pinctrl"; reg = <0x0 0x1fe00420 0x0 0x18>; - status = "disabled"; + + gmac1_default:gmac1 { + mux { + groups ="gmac1"; + function ="gmac1"; + }; + }; + + hda_default:hda { + mux { + groups ="hda_i2s"; + function ="hda"; + }; + }; + + hda_as_gpio:hda_as_gpio { + mux { + groups ="hda_i2s"; + function ="gpio"; + }; + }; + + i2s_default:i2s { + mux { + groups ="hda_i2s"; + function ="i2s"; + }; + }; + + ahci_default:ahci { + mux { + groups ="sata_led"; + function ="sata_led"; + }; + }; + + ahci_led_as_gpio:ahci_led_as_gpio { + mux { + groups ="sata_led"; + function ="gpio"; + }; + }; + + pwm0_default:pwm0 { + mux { + groups ="pwm0"; + function ="pwm0"; + }; + }; + + pwm0_as_gpio:pwm0_as_gpio { + mux { + groups ="pwm0"; + function ="gpio"; + }; + }; + + pwm1_default:pwm1 { + mux { + groups ="pwm1"; + function ="pwm1"; + }; + }; + + pwm1_as_gpio:pwm1_as_gpio { + mux { + groups ="pwm1"; + function ="gpio"; + }; + }; + + pwm2_default:pwm2 { + mux { + groups ="pwm2"; + function ="pwm2"; + }; + }; + + pwm2_as_gpio:pwm2_as_gpio { + mux { + groups ="pwm2"; + function ="gpio"; + }; + }; + + pwm3_default:pwm3 { + mux { + groups ="pwm3"; + function ="pwm3"; + }; + }; + + pwm3_as_gpio:pwm3_as_gpio { + mux { + groups ="pwm3"; + function ="gpio"; + }; + }; + + uart0_4_default:uart0_4{ + mux { + groups = "uart0"; + function = "uart0_4"; + }; + }; + + uart1_4_default:uart1_4 { + mux { + groups = "uart1"; + function = "uart1_4"; + }; + }; + + uart2_4_default:uart2_4 { + mux { + groups = "uart2"; + function = "uart2_4"; + }; + }; + + dvo0_default:dvo0 { + mux { + groups = "dvo0_lio_uart"; + function = "dvo0"; + }; + }; + + dvo1_default:dvo1 { + mux { + groups = "dvo1_camera"; + function = "dvo1"; + }; + }; + + can0_default:can0 { + mux { + groups = "can0"; + function = "can0"; + }; + }; + + can1_default:can1 { + mux { + groups = "can1"; + function = "can1"; + }; + }; + + can1_as_gpio:can1_as_gpio { + mux { + groups = "can1"; + function = "gpio"; + }; + }; + + sdio_gpio:sdio { + mux { + groups = "sdio"; + function = "gpio"; + }; + }; + + lio_default:lio { + mux { + groups = "dvo0_lio_uart"; + function = "lio"; + }; + }; + + i2c0_as_gpio:i2c0_as_gpio { + mux { + groups = "i2c0"; + function = "gpio"; + }; + }; + i2c1_as_gpio:i2c1_as_gpio { + mux { + groups = "i2c1"; + function = "gpio"; + }; + }; }; clk: clock-controller@1fe00480 { @@ -246,7 +426,7 @@ #thermal-sensor-cells = <1>; }; - dma-controller@1fe00c00 { + apbdma0: dma-controller@1fe00c00 { compatible = "loongson,ls2k1000-apbdma"; reg = <0x0 0x1fe00c00 0x0 0x8>; interrupt-parent = <&liointc1>; @@ -256,7 +436,7 @@ status = "disabled"; }; - dma-controller@1fe00c10 { + apbdma1: dma-controller@1fe00c10 { compatible = "loongson,ls2k1000-apbdma"; reg = <0x0 0x1fe00c10 0x0 0x8>; interrupt-parent = <&liointc1>; @@ -303,7 +483,121 @@ interrupt-parent = <&liointc0>; interrupts = <0x0 IRQ_TYPE_LEVEL_HIGH>; no-loopback-test; - status = "disabled"; + status = "okay"; + }; + + uart1: serial@0x1fe20100 { + compatible = "ns16550a"; + pinctrl-names = "default"; + pinctrl-0 = <&uart1_4_default>; + reg = <0 0x1fe20100 0 0x10>; + clocks = <&clk LOONGSON2_APB_CLK>; + interrupt-parent = <&liointc0>; + interrupts = <0x0 IRQ_TYPE_LEVEL_HIGH>; + no-loopback-test; + status = "disable"; + }; + + uart2: serial@0x1fe20200 { + compatible = "ns16550a"; + pinctrl-names = "default"; + pinctrl-0 = <&uart2_4_default>; + reg = <0 0x1fe20200 0 0x10>; + clocks = <&clk LOONGSON2_APB_CLK>; + interrupt-parent = <&liointc0>; + interrupts = <0x0 IRQ_TYPE_LEVEL_HIGH>; + no-loopback-test; + status = "disable"; + }; + + uart3: serial@0x1fe20300 { + compatible = "ns16550a"; + reg = <0 0x1fe20300 0 0x10>; + clocks = <&clk LOONGSON2_APB_CLK>; + interrupt-parent = <&liointc0>; + interrupts = <0x0 IRQ_TYPE_LEVEL_HIGH>; + no-loopback-test; + status = "disable"; + }; + + uart4: serial@0x1fe20400 { + compatible = "ns16550a"; + reg = <0 0x1fe20400 0 0x10>; + clocks = <&clk LOONGSON2_APB_CLK>; + interrupt-parent = <&liointc0>; + interrupts = <0x1 IRQ_TYPE_LEVEL_HIGH>; + no-loopback-test; + status = "disable"; + }; + + uart5: serial@0x1fe20500 { + compatible = "ns16550a"; + reg = <0 0x1fe20500 0 0x10>; + clocks = <&clk LOONGSON2_APB_CLK>; + interrupt-parent = <&liointc0>; + interrupts = <0x1 IRQ_TYPE_LEVEL_HIGH>; + no-loopback-test; + status = "disable"; + }; + + uart6: serial@0x1fe20600 { + compatible = "ns16550a"; + reg = <0 0x1fe20600 0 0x10>; + clocks = <&clk LOONGSON2_APB_CLK>; + interrupt-parent = <&liointc0>; + interrupts = <0x1 IRQ_TYPE_LEVEL_HIGH>; + no-loopback-test; + status = "disable"; + }; + + uart7: serial@0x1fe20700 { + compatible = "ns16550a"; + reg = <0 0x1fe20700 0 0x10>; + clocks = <&clk LOONGSON2_APB_CLK>; + interrupt-parent = <&liointc0>; + interrupts = <0x1 IRQ_TYPE_LEVEL_HIGH>; + no-loopback-test; + status = "disable"; + }; + + uart8: serial@0x1fe20800 { + compatible = "ns16550a"; + reg = <0 0x1fe20800 0 0x10>; + clocks = <&clk LOONGSON2_APB_CLK>; + interrupt-parent = <&liointc0>; + interrupts = <0x2 IRQ_TYPE_LEVEL_HIGH>; + no-loopback-test; + status = "disable"; + }; + + uart9: serial@0x1fe20900 { + compatible = "ns16550a"; + reg = <0 0x1fe20900 0 0x10>; + clocks = <&clk LOONGSON2_APB_CLK>; + interrupt-parent = <&liointc0>; + interrupts = <0x2 IRQ_TYPE_LEVEL_HIGH>; + no-loopback-test; + status = "disable"; + }; + + uart10: serial@0x1fe20a00 { + compatible = "ns16550a"; + reg = <0 0x1fe20a00 0 0x10>; + clocks = <&clk LOONGSON2_APB_CLK>; + interrupt-parent = <&liointc0>; + interrupts = <0x2 IRQ_TYPE_LEVEL_HIGH>; + no-loopback-test; + status = "disable"; + }; + + uart11: serial@0x1fe20b00 { + compatible = "ns16550a"; + reg = <0 0x1fe20b00 0 0x10>; + clocks = <&clk LOONGSON2_APB_CLK>; + interrupt-parent = <&liointc0>; + interrupts = <0x2 IRQ_TYPE_LEVEL_HIGH>; + no-loopback-test; + status = "disable"; }; i2c2: i2c@1fe21000 { @@ -352,6 +646,7 @@ status = "disabled"; }; + //no driver i2s: i2s@1fe2d000 { compatible = "loongson,ls2k1000-i2s"; reg = <0 0x1fe2d000 0 0x14>, @@ -372,6 +667,106 @@ status = "disabled"; }; + //no driver + nand: nand@1fe26040 { + #address-cells = <2>; + compatible = "loongson,ls-nand"; + reg = <0 0x1fe26040 0 0x0 + 0 0x1fe26000 0 0x20>; + interrupt-parent = <&liointc0>; + interrupts = <20 IRQ_TYPE_LEVEL_HIGH>; + interrupt-names = "nand_irq"; + + dmas = <&apbdma0 1>; + dma-names = "nand_rw"; + dma-mask = <0xffffffff 0xffffffff>; + + status = "disabled"; + }; + + /* CAN controller nodes: + * If you want to use the "can" function,enable the "can" + * controller by configure general configuration register 0. + */ + can0: can@1fe20c00{ + compatible = "nxp,sja1000"; + reg = <0 0x1fe20c00 0 0xff>; + interrupt-parent = <&liointc0>; + interrupts = <16 IRQ_TYPE_LEVEL_HIGH>; + pinctrl-0 = <&can0_default>; + pinctrl-names = "default"; + status = "disabled"; + }; + can1: can@1fe20d00{ + compatible = "nxp,sja1000"; + reg = <0 0x1fe20d00 0 0xff>; + interrupt-parent = <&liointc0>; + interrupts = <17 IRQ_TYPE_LEVEL_HIGH>; + pinctrl-0 = <&can1_default>; + pinctrl-names = "default"; + status = "disabled"; + }; + + + pwm0: pwm@1fe22000{ + compatible = "loongson,ls2k-pwm"; + reg = <0 0x1fe22000 0 0x10>; + clocks = <&clk LOONGSON2_APB_CLK>; + clock-names = "pwm-clk"; + interrupt-parent = <&liointc0>; + interrupts = <24 IRQ_TYPE_LEVEL_HIGH>; + #pwm-cells = <2>; + pinctrl-0 = <&pwm0_default>; + pinctrl-names = "default"; + status = "disabled"; + }; + + pwm1: pwm@1fe22010{ + compatible = "loongson,ls2k-pwm"; + reg = <0 0x1fe22010 0 0x10>; + clocks = <&clk LOONGSON2_APB_CLK>; + clock-names = "pwm-clk"; + interrupt-parent = <&liointc0>; + interrupts = <25 IRQ_TYPE_LEVEL_HIGH>; + #pwm-cells = <2>; + pinctrl-0 = <&pwm1_default>; + pinctrl-names = "default"; + status = "disabled"; + }; + + pwm2: pwm@1fe22020 { + compatible = "loongson,ls2k-pwm"; + + reg = <0 0x1fe22020 0 0xf>; + clocks = <&clk LOONGSON2_APB_CLK>; + clock-names = "pwm-clk"; + interrupt-parent = <&liointc0>; + interrupts = <26 IRQ_TYPE_LEVEL_HIGH>; //34- 31 + + #pwm-cells = <2>; + pinctrl-0 = <&pwm2_default>; + pinctrl-names = "default"; + + status = "disabled"; + }; + + pwm3: pwm@1fe22030 { + compatible = "loongson,ls2k-pwm"; + + reg = <0 0x1fe22030 0 0xf>; + clocks = <&clk LOONGSON2_APB_CLK>; + clock-names = "pwm-clk"; + interrupt-parent = <&liointc0>; + interrupts = <27 IRQ_TYPE_LEVEL_HIGH>; + + #pwm-cells = <2>; + pinctrl-0 = <&pwm3_default>; + pinctrl-names = "default"; + + status = "disabled"; + }; + + pcie@1a000000 { compatible = "loongson,ls2k-pci"; reg = <0x0 0x1a000000 0x0 0x02000000>, @@ -383,7 +778,14 @@ ranges = <0x01000000 0x0 0x00008000 0x0 0x18008000 0x0 0x00008000>, <0x02000000 0x0 0x60000000 0x0 0x60000000 0x0 0x20000000>; + + gmac0: ethernet@3,0 { + // compatible = "snps,dwmac-3.70a"; + compatible = "pci0014,7a03.0", + "pci0014,7a03", + "pciclass0c0320", + "pciclass0c03"; reg = <0x1800 0x0 0x0 0x0 0x0>; interrupt-parent = <&liointc0>; interrupts = <12 IRQ_TYPE_LEVEL_HIGH>, @@ -393,6 +795,7 @@ }; gmac1: ethernet@3,1 { + // compatible = "snps,dwmac-3.70a"; reg = <0x1900 0x0 0x0 0x0 0x0>; interrupt-parent = <&liointc0>; interrupts = <14 IRQ_TYPE_LEVEL_HIGH>, @@ -401,7 +804,21 @@ status = "disabled"; }; + otg: usb@4,0 { + compatible = "loongson,dwc2-otg"; + reg = <0x2000 0x0 0x0 0x0 0x0>; + interrupt-parent = <&liointc1>; + interrupts = <17 IRQ_TYPE_LEVEL_HIGH>; + status = "disabled"; + }; + ehci0: usb@4,1 { + // compatible = "generic-ehci"; + compatible = "pci0014,7a14.0", + "pci0014,7a14", + "pciclass0c0320", + "pciclass0c03"; + reg = <0x2100 0x0 0x0 0x0 0x0>; interrupt-parent = <&liointc1>; interrupts = <18 IRQ_TYPE_LEVEL_HIGH>; @@ -409,13 +826,18 @@ }; ohci0: usb@4,2 { + // compatible = "generic-ohci"; + compatible = "pci0014,7a24.0", + "pci0014,7a24", + "pciclass0c0310", + "pciclass0c03"; reg = <0x2200 0x0 0x0 0x0 0x0>; interrupt-parent = <&liointc1>; interrupts = <19 IRQ_TYPE_LEVEL_HIGH>; status = "disabled"; }; - display@6,0 { + dc: display@6,0 { reg = <0x3000 0x0 0x0 0x0 0x0>; interrupt-parent = <&liointc0>; interrupts = <28 IRQ_TYPE_LEVEL_HIGH>; @@ -430,6 +852,12 @@ }; sata: sata@8,0 { + // compatible = "snps,spear-ahci"; + compatible = "pci0014,7a08.0", + "pci0014,7a08", + "pciclass010601", + "pciclass0106"; + reg = <0x4000 0x0 0x0 0x0 0x0>; interrupt-parent = <&liointc0>; interrupts = <19 IRQ_TYPE_LEVEL_HIGH>; diff --git a/arch/loongarch/boot/dts/ls2k1000_dp.dts b/arch/loongarch/boot/dts/ls2k1000_dp.dts new file mode 100644 index 000000000..0f320b856 --- /dev/null +++ b/arch/loongarch/boot/dts/ls2k1000_dp.dts @@ -0,0 +1,403 @@ +#include "loongson-2k1000.dtsi" +#include "loongson_panel_param.dtsi" +#include + + +/ { + model = "LS2K1000-DP-V10"; + + aliases { + serial0 = &uart0; + }; + + chosen { + stdout-path = "serial0:115200n8"; + bootargs = "earlycon"; + }; + + /* not need memory node, we get memory info from boot params. */ + // memory { + // name = "memory"; + // device_type = "memory"; + // reg = <0 0x00200000 0 0x0ee00000 + // 0 0x90000000 0 0x70000000>; + // }; + + reserved-memory { + #address-cells = <2>; + #size-cells = <2>; + ranges; + + fb_memory: framebuffer { + compatible = "shared-dma-pool"; + no-map; + reg = <0 0x0b000000 0 0x04000000>; /* 64M */ + }; + + linux,cma { + compatible = "shared-dma-pool"; + reusable; + size = <0 0x2000000>; + linux,cma-default; + }; + }; + +#if 0 + pwmleds { + compatible = "pwm-leds"; + + led4 { + label = "led4-pwm"; + pwms = <&pwm0 0 2550000>; + max-brightness = <255>; + active-low; + }; + }; +#endif + + leds { + compatible = "gpio-leds"; + + led1 { + label = "led1"; + gpios = <&gpio0 27 GPIO_ACTIVE_LOW>; + linux,default-trigger = "heartbeat"; + default-state = "on"; + }; + + led2 { + label = "led2"; + gpios = <&gpio0 28 GPIO_ACTIVE_LOW>; + default-state = "off"; + }; + + led3 { + label = "led3"; + gpios = <&gpio0 29 GPIO_ACTIVE_LOW>; + default-state = "off"; + }; + }; + + gpio-fan { + compatible = "gpio-fan"; + gpios = <&gpio0 57 GPIO_ACTIVE_HIGH>; + gpio-fan,speed-map = <0 0>, + <3000 1>, + <6000 2>; + #cooling-cells = <2>; /* min followed by max */ + }; + + gpio_keys { + compatible = "gpio-keys-polled"; + #address-cells = <1>; + #size-cells = <0>; + poll-interval = <20>; + + enter { + label = "enter"; + linux,code = ; + gpios = <&gpio0 25 GPIO_ACTIVE_LOW>; + }; + + tab { + label = "tab"; + linux,code = ; + gpios = <&gpio0 26 GPIO_ACTIVE_LOW>; + }; + }; + + lcd_backlight: backlight { + compatible = "gpio-backlight"; + gpios = <&gpio0 24 GPIO_ACTIVE_HIGH>; + status = "okay"; + }; + + panel: dvo-connector@0 { + #address-cells = <1>; + #size-cells = <0>; + compatible = "panel-lvds", "auo,b101ean01"; + backlight = <&lcd_backlight>; + + /* lcd power on control gpio */ + /* enable-gpios = <&gpio0 3 GPIO_ACTIVE_HIGH>; */ + // power-supply = <&vdd_lcd>; + + status = "okay"; +#if 1 // 7' LCD + width-mm = <180>; + height-mm = <110>; + label = "ATK-MD0700R-1024x600"; + data-mapping = "jeida-24"; + + panel-timing { + clock-frequency = <51200000>; + hactive = <1024>; + vactive = <600>; + hsync-len = <20>; + hfront-porch = <160>; + hback-porch = <140>; + vfront-porch = <12>; + vback-porch = <20>; + vsync-len = <3>; + de-active = <1>; + hsync-active = <0>; + vsync-active = <0>; + pixelclk-active = <0>; + }; +#else // 10' LCD + width-mm = <229>; + height-mm = <149>; + label = "ATK-MD1010R-1280x800"; + data-mapping = "jeida-24"; + + panel-timing { + clock-frequency = <71100000>; + hactive = <1280>; + vactive = <800>; + hsync-len = <10>; + hfront-porch = <70>; + hback-porch = <80>; + vfront-porch = <10>; + vback-porch = <10>; + vsync-len = <3>; + de-active = <1>; + hsync-active = <0>; + vsync-active = <0>; + pixelclk-active = <0>; + }; +#endif + + port@0 { + reg = <0>; + + #address-cells = <1>; + #size-cells = <0>; + + dvo_connector_in: endpoint@0 { + reg = <0>; + remote-endpoint = <&dc_out_rgb1>; + }; + }; + }; +}; + +&spi0 { + status = "okay"; + + #address-cells = <1>; + #size-cells = <0>; + spi-flash@0 { + compatible = "jedec,spi-nor"; + spi-max-frequency = <30000000>; + reg = <0>; /* CS0 */ + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + partition@0 { + label = "u-boot"; + reg = <0x0000000 0x100000>; + read-only; + }; + }; + }; + +#if 0 + // 没引出来 + spidev1@1 { + compatible = "rohm,dh2228fv"; + reg = <1>; + spi-max-frequency = <50000000>; + }; +#endif + + spidev2@2 { + compatible = "rohm,dh2228fv"; + reg = <2>; + spi-max-frequency = <50000000>; + }; + + spidev3@3 { + compatible = "rohm,dh2228fv"; + reg = <3>; + spi-max-frequency = <50000000>; + }; +}; + + +&dc { + status = "okay"; + #address-cells = <1>; + #size-cells = <0>; + memory-region = <&fb_memory>; + + // output-ports = <&dvo0>; + + dvo1: dvo@1 { + compatible = "lsdc,dvo"; + /* 1 for connector 1 (DVO1) */ + reg = <1>; + + pinctrl-0 = <&dvo1_default>; + pinctrl-names = "default"; + }; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@1 { + reg = <1>; + dc_out_rgb1: endpoint { + remote-endpoint = <&dvo_connector_in>; + }; + }; + }; +}; + +&pwm0 { + status = "okay"; +}; + +&pwm1 { + status = "okay"; +}; + +&pwm2 { + status = "okay"; +}; + +&pwm3 { + status = "okay"; +}; + +&sata { + status = "okay"; + pinctrl-0 = <&ahci_default>; + pinctrl-names = "default"; + ports-implemented = <0x1>; +}; + +&gmac0 { + status = "okay"; + phy-handle = <&yt8511h0>; + mdio { + compatible = "snps,dwmac-mdio"; + #address-cells = <1>; + #size-cells = <0>; + + yt8511h0: ethernet-phy@0 { + compatible = "ethernet-phy-ieee802.3-c22"; + reg = <0>; + motorcomm,led0_cfg = <0x40>; //千兆常亮 + motorcomm,led1_cfg = <0x30>; //百兆 十兆常亮 + motorcomm,led2_cfg = <0x2600>; //有数据时闪烁 + }; + }; +}; + +&gmac1 { + status = "okay"; + phy-handle = <&yt8511h1>; + mdio { + compatible = "snps,dwmac-mdio"; + #address-cells = <1>; + #size-cells = <0>; + + yt8511h1: ethernet-phy@0 { + compatible = "ethernet-phy-ieee802.3-c22"; + reg = <0>; + motorcomm,led0_cfg = <0x40>; //千兆常亮 + motorcomm,led1_cfg = <0x30>; //百兆 十兆常亮 + motorcomm,led2_cfg = <0x2600>; //有数据时闪烁 + }; + }; +}; + + +&can0 { + //nxp,external-clock-frequency = <125000000>; + clocks = <&clk LOONGSON2_APB_CLK>; + net,tx_queue_len = <1024>; + status = "okay"; +}; + +&can1 { + //nxp,external-clock-frequency = <125000000>; + clocks = <&clk LOONGSON2_APB_CLK>; + net,tx_queue_len = <1024>; + status = "okay"; +}; + +&i2c2 { + status = "okay"; + + #address-cells = <1>; + #size-cells = <0>; + eeprom@57 { + compatible = "atmel,24c32"; + reg = <0x57>; + pagesize = <32>; + }; +}; + +&i2c3 { + status = "okay"; + + #address-cells = <1>; + #size-cells = <0>; + // 两款芯片不能同时支持,因为用同一个GPIO + // 但可以在两个屏幕间切换 + + // 7寸触屏芯片 + touchpad: gt911@5d { + compatible = "goodix,gt911"; + reg = <0x5d>; + interrupt-parent = <&liointc1>; + interrupts = <29 IRQ_TYPE_LEVEL_HIGH>; + irq-gpios = <&gpio0 0 GPIO_ACTIVE_LOW>; + }; + + // 4.3寸触屏芯片 + touchpad_1: gt9147@14 { + compatible = "goodix,gt9147"; + reg = <0x14>; + // 2K300 GPIO 支持中断控制 + // GPIO 中断号为 vhwirq-base + pinnum (210 = 128 + 82) + interrupt-parent = <&liointc1>; + interrupts = <29 IRQ_TYPE_LEVEL_HIGH>; + irq-gpios = <&gpio0 0 GPIO_ACTIVE_LOW>; + }; +}; + +&uart1 { + status = "okay"; +}; + +&uart2 { + status = "okay"; +}; + +&uart3 { + status = "okay"; +}; + +&uart4 { + status = "okay"; +}; + +&uart5 { + status = "okay"; +}; + +&uart6 { + status = "okay"; +}; + +&otg { + dr_mode = "host"; + status = "okay"; +}; + diff --git a/arch/loongarch/boot/dts/ls2k300_g2k03z0_core_v10.dtsi b/arch/loongarch/boot/dts/ls2k300_g2k03z0_core_v10.dtsi index 875511c33..a345ad371 100644 --- a/arch/loongarch/boot/dts/ls2k300_g2k03z0_core_v10.dtsi +++ b/arch/loongarch/boot/dts/ls2k300_g2k03z0_core_v10.dtsi @@ -1,4 +1,4 @@ -#include "loongson2k300.dtsi" +#include "loongson-2k0300.dtsi" / { chosen { diff --git a/arch/loongarch/boot/dts/ls2k300_gongkong_g2k03z2_core.dtsi b/arch/loongarch/boot/dts/ls2k300_gongkong_g2k03z2_core.dtsi index de3e99f93..df1873de0 100644 --- a/arch/loongarch/boot/dts/ls2k300_gongkong_g2k03z2_core.dtsi +++ b/arch/loongarch/boot/dts/ls2k300_gongkong_g2k03z2_core.dtsi @@ -1,4 +1,4 @@ -#include "loongson2k300.dtsi" +#include "loongson-2k0300.dtsi" / { chosen { diff --git a/arch/loongarch/boot/dts/ls2k300_vanguard_pi_common.dtsi b/arch/loongarch/boot/dts/ls2k300_vanguard_pi_common.dtsi index 6ceeafaf4..4219edb52 100644 --- a/arch/loongarch/boot/dts/ls2k300_vanguard_pi_common.dtsi +++ b/arch/loongarch/boot/dts/ls2k300_vanguard_pi_common.dtsi @@ -1,4 +1,4 @@ -#include "loongson2k300.dtsi" +#include "loongson-2k0300.dtsi" #include "loongson_panel_param.dtsi" / { diff --git a/arch/loongarch/configs/loongson_2k300_defconfig b/arch/loongarch/configs/loongson_2k300_defconfig index 01c18b68f..6cd8cbb8b 100644 --- a/arch/loongarch/configs/loongson_2k300_defconfig +++ b/arch/loongarch/configs/loongson_2k300_defconfig @@ -42,8 +42,6 @@ CONFIG_HZ_1000=y CONFIG_CMDLINE="fbcon=logo-pos:center fbcon=logo-count:1" CONFIG_CMDLINE_EXTEND=y CONFIG_BUILTIN_DTB=y -# CONFIG_SCHED_SMT is not set -CONFIG_SMP=y # CONFIG_SUSPEND is not set CONFIG_PM=y # CONFIG_ACPI_AC is not set diff --git a/drivers/net/can/ls_canfd/lscanfd_dma.o_shipped b/drivers/net/can/ls_canfd/lscanfd_dma.o_shipped index 4ed0b1742a65b7bdd0608b3c0df98567ca36cfd8..70e76b94710b6502e5b9518c559c16babbbd1c8e 100644 GIT binary patch literal 45280 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 YAFKUKXkcLra{Z~jufd-!*S7!v0)dLNl>h($ literal 32680 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 AnE(I) diff --git a/drivers/net/can/ls_canfd/lscanfd_platform.o_shipped b/drivers/net/can/ls_canfd/lscanfd_platform.o_shipped index e7c256f1da8bd7a24a3a7fb7dfbad76f82e1627e..c52be3d00464e86970c66130fad666c9e13a7d52 100644 GIT binary patch literal 8808 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 H<@Ns`FiMQ# literal 7472 zcmeI1e~27c9l+o1UeZfb?O7XJYSf9wbhqAZ?sB=!DGh9LO_RbAPm@5w%Iw_C-0hIr zna#}X@8_=h4W()*)S!3ymkf`Yhyzcb(O z?008(K|=pgd~ox=@AJOD-kUe?&Fp>Y#L|*#^v(hPER-NLN zcDwk+o9*IGh_^#Mn|nd~W#IyE1KfY=it-vjxtF1K^HR6F+?*#6-!yB|cKm-AQitqE1Vyxe*WbukCl z!Ttkzb>KeWUmt7d?!Eqi`cn?_QtHv&;Lia+6Iv^G3u?|Mjys_&^|4orb(j|%_e)3B zGcaZxe*wl^xTJLoFzy1(MFGZMfUy_e0KYIN1+(4BX>dOt`teV5-Jf;OU=ElU=EO0& zKj@yxvX{S7QQhadXZC{umgDgE@mNYOGbAHFAo$~gKPq@d@Pgn^3ywF1i$%gos2^hp zb&cdx8NNjv^Z5kHSiM3r@+p$B`VGm*r%A?Yn`DgpVUn?Wn`DeD`9F!HpAyMf-A9iQ z`uT|94-!W|lJ6ysehv!#{lX92qqG!+AIX=5AHGLuR2BMiK5q*B+0?sI-zSdwYl3eH zKa&4Q_&Fr>Zwo*B1b;>Nk^D8{I1kd#IILNG9g|20Gh51c#1L_HqaegI-XD%-2 zm)A6cMZ@#_NDJ(`(a;Rb3hXc}-J9}N$FnrYi|in1HX`V7!zt7C&GXZ%fqkKAd*){B zHs*%6YE4^pBiK;THnFKN?`+O!k^Zz-dH|?;Tz8X-m?U&S;CrPCxmC zw&;6N;JdCJXi1Pk4@NVp`2iZo+nILOHfx^m`fHnD9W?yFKDzKnD4vuNyq0&{~6MY#8C2mPky4% ziS^lg|60rU?I4MM1l5?}*ZchMPL#y;S}YIpZ^V9j{0`Z?5cBs?OR3wbq+s@YTwvh$ z%VsS91g>L(_eO|*-Z!BC+gQKH`}N;HpuY#kJ*Im6L!>c9oZA)R72Wjo?Q{@KYnWJAz*s!M{0zzc_-wG=l$p1pnO# zKDYy$14s|;NVkG@%ZQA$Gugm($8(~T@gbwb>$ksd5AsIfuk^6Ls@ILktf|t{vD1sE zKK8`+IfAgX#|!^!>_^ZhVLf78JM<$Xm#E3;}5DH?bCIF z3kvQf+}wr@M=od?mcDKT4rZk{=ML#c5Ez@NgWq4NVtTjZWucpXz3zK3ie6%?hT|$2 z%DN68Y`p|&etOfAdJ3Ci!}hGS4Z~>GZTOTAH|vqH0(BH5b&aLKc8yYGZ$zpTFYwYz z7^+fCaTQTl;A1D6&z2Ub8`oN2H}O~#9F*Y0(r~jd@P#?9(Ner-dl8Y9OYwtMg2n52 zt6+hXV|$PzeBIimlc$FrnLeqicN?;^~rly#>;QF{Hzl9JQ3SV-!>cXRu=9b=W# z63wK>es0TtZEB+RdIgN=iSSP4wy{~-}{G+e~T1(z2f-st06o7W56)J{H+a| z>TR;GVnYeZ%r!#$Zsg>m-~1GUyD;ze@Hpe~iuX`TkXbVSKvHASGps?B(|b z_OLyvsX7Q~pS^zz^ih0=6{*hJ*MJYpp9Ar8j`NSt6WeqCUj{ZT{st-DhJIPtp4k-; zhQ*)Rm1tZiMU0PMKWxwOp9eN9ew*xBpWLMO+{W*)Ve#*fJ;%ZL_?5-}m~R0a7JvIc zjQ`?@_